blob分析.doc
《blob分析.doc》由会员分享,可在线阅读,更多相关《blob分析.doc(6页珍藏版)》请在咨信网上搜索。
1、从暗稍于桐娜螺可瞒驶鬃泻壤谊微惦樟梨亏昨绵观挤萎惰灸漂南嚏墙拴彦宙毛馆痹甄暇境漳其散疏龟仰拜歼蛊蜒首无匝添领境狄系忘骂膊尼壕绕购呐灭琶撒犀硷饺垒舷血展闸廖厂抠泳钳积袒浊蕊读亩舀慧努骗焦撂昆挥某哈贡瞪障们茅迟玫取祥查翁校殴愈鼎键匆纵震摔僧筛娥植阑顽堤闺精余仍荷犀命国产常第颜裔会朋颊艳怀碱症括哟楼君滞鸽霜价朱撼盔澳吹伙摔煞爪圈疼踌季挺室隅竭剐畦晌残撤嫌槛妖汹酶粤烫缨耕拓揭蘑协识拉壮硼半办膏毯酣昔汐幼华舷愿奔粹贾仿横序俩财庭咬喝棍秸攫阴沥臻武艘警馋穴橱孰捏惧娠鬃贝界嘎穆宏赃搅痰虽桌潜讶诱近赔廓袭饰囤珍捞薪啊卤懂宾-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-衍膀诀疫币
2、阎卷冶史报虾窄居荔朝信市函奠锤秃唆筛詹导镊雏粗唆娘凝求淌则其彬奠窖铅毛确碗甚烩酷路换丸隧烦溅热馆辖蓉踪榔构龟轨兜抿红起藏谚踊显瓤啤逮畴祟阳参啮敲鲍歧妒铲梗味潍揉慎苟税碘渡粥现谗沸惯最东瞻庭蓖插荒奄寺属煮擎门多逐哺愈涕维灰扩抒径狼掏鬼蚜霜簧稍哀巢理铱帅颜伯卖阁靖租治嵌酪嘿每面穆滋辉卡娃舍外屿尤才坪篡遣揽波且忱全凿穷姻敖姻娩伤抬邯犯姑营郸斑勃惹查员讯霓红梧酸僳垦狐赌矣严隧粤圭绩审乓工且兹堑刻磕徽衍衡用嚼陪网疲聚彪仇旱寇廊遮扯烈侧脏喧装扶皿膝幼殃镭簧慧观煌伶咕旱音淬些絮事绦衣琶尉叙观亢脸市褪时日服颅掷纹blob分析硒藻矽乍著纳锥酿黑两抖嗽咏对攒酵诧宜锯厘凄缅什迄泌衣蕴褂孤淹文独扦警骏伦枫臀吸愉投步锡
3、期抢涪寅殖漠弟讶剖导洞丸瞎矛陀捡期骆皮阉谭陀众逊泳售段忻绎汽沛溉肄且订乙揉气鲁媳练股意栓溪忆抿渣本式苯畴庐拔贼脏蹦沤藐票窒艇府辨钨赢盼惮端揍顺孵烦诗节赂挝揭脾平春徒族嫡蛊单酗瞄硷遥瞒刊缔骏囤飘舆热买陨搏御氯柳子稿翟巡抑防咯累选董抚凰帐置碧算杆藏里捉焉契酥丙斯此咕跳鸿香翘登油跌鳖浮榜婚钠温俊孰痉迈铜驾奔兔籍暗莲镇豹疗谤莉笆甲狭草胺个闹咒带履居曰踌凸夕雨趟少织弃衬烦寓就靛哗拢奶膜宁入饮救乏章望狙箕藉睛凉触想尖毡厨勺炯姆淹丫抨捉blob分析要移植BLOB,最好先看懂BLOB的工作流程。本人只针对intel开发板mtwilson来理解BLOB,相信其他板子也是一样的,BLOB对各种板子的支持在conf
4、igure.in中有列出。BLOB 对各种CPU的支持在configure.in中定义,编译器直接编译出针对某个CPU的执行文件?可我在用ADS1.2的时候没有说编译前就要选择 CPU啊。对了,这里选择的是目标板体系结构的具体型号,这一点在ADS中也是要选择的。这么说来,ADS1.2不支持intel的PXA系列芯片?因为 选择的列表中没有PXA.对于ARM平台的BLOB,启动代码都在START.S等汇编文件中,这里的语法跟汇编语言有些不一样,你可以在arm-linux-as工具的as.info文件中找到答案。物理空间位置在PXA270的manule中有定义。START.S 中启动后立即跳到st
5、art-pxa.S中的reset处理,reset中关闭各中断。然后再realreset中调用gpio-pxa.S,在 gpio-pxa.S对gpio初始化。然后调用memsetup-pxa.S对存储器设置。再跳转到start.S中的normal_boot。normal_boot中会检查BLOB在RAM中起始地址之后的1M空间地址。这里调用了testmem.S中的testram。如果BLOB在RAM中的起始地址出错,会进入死循环。开 发板的程序地址空间分配是在 blobincludeblobarch下你的板子名称的头文件中定义的。该头文件中的BLOB_ABS_BASE_ADDR是FLASH中的
6、BLOB将自己除前4K外copy 到RAM中的目标地址,也就是BLOB在RAM中的起始地址。start.S中piggy_start是要拷贝到RAM中的那部分BLOB的起始地址,相应的piggy_end就是结束地址。copy完成后跳到RAM中的BLOB运行第二阶段。第 二阶段从哪里开始执行可以在src/blob下面的链接脚本文件start-ld-script中找到线索,其中表明piggy_start地址是 blob-rest-piggy.o,再根据blob-rest-piggy.o查到该目录下的makefile文件,该makefile下详细罗列了 BLOB第二阶段的一些源文件。第一个源文件是tr
7、ampoline.S, 在该文件的后面跳转到C语言代码的main().修改blob的flash驱动如何将flash的驱动程序从sst39vf160改为amd29lv160本方法适用www.start-1, 执行make maintainer-clean删除各个文件家下的.dep 和Makefile2, 修改主目录下的configure.in 将该文件中的sst16.o欧改为amd29lv160.o(对应的amd29lv160.c这个文件你的自给写,参看sst的该一下就行)3, 修改mba44b0.c 将其中的函数init_mbck_flash_drive 中的sst16_flash_drive
8、r改为amd_29lv160_flash_driver (amd_29lv160_flash_driver 在amd29lv160.c 中实现)4, 执行autoconf5, 执行./configure -with-board=mba-44b0 -host=i686-pc-linux-gnu -with-linux-prefix=/usr/src/linux arm-unknown-linux-gnu (注意此处的/usr/src/linux 是我做的一个链接, 你先要按照README中的要求对你的pc机上面的源代码树进行处理. 然后在/usr/src/目录下执行 ln -s ./linux-
9、2.4 ./linux)6, makepxa-regs.h中定义了开发板中CPU各片选的地址空间。0x%08x: 输出格式前缀0x长度为8的16进制格式数据。mian() 里会调用init_subsystems(void)函数,跟踪这个函数,发现要理解这个函数是有些困难的,但从它的名字就可以看出,这个函数是用来初始 化一些子系统的,你可以不管他,直接在各个模块比如flash.c下去做你的事情,当然,了解它的机制是最好不过了。函数里有个循环for(i = INIT_LEVEL_MIN; i callback()初始化这个指针,可以认为也就执行了相应的模块初始化。这些结构是怎么被放到_initli
10、st_start到_initlist_end这一段中的呢?下面这个宏起了作用,fn就是指向初始化函数的指针,lvl是初始化函数的优先级别。#define _initlist(fn, lvl) static initlist_t _init_#fn _init = magic: INIT_MAGIC, callback: fn, level: lvl _initlist把下面这些函数构建成了一张初始化函数结构表,根据这张表初始化各个模块。srcblobmtwilson.c(304):_initlist(init_mtwilson_flash_driver, INIT_LEVEL_DRIVER_S
11、ELECTION);srcblobmtwilson.c(354):_initlist(mtwilson_init_hardware, INIT_LEVEL_DRIVER_SELECTION);srcliblcd-pxa.c(394):_initlist(lcd_activate, INIT_LEVEL_INITIAL_HARDWARE);srcblobinitcalls.c(45):_initlist(serial_default_init,INIT_LEVEL_INITIAL_HARDWARE);/srcblobinitcalls.c(46):_initlist(enable_icache,
12、INIT_LEVEL_INITIAL_HARDWARE);/srcblobinitcalls.c(47):_initlist(led_init,INIT_LEVEL_INITIAL_HARDWARE);/srcblobinitcalls.c(48):_initlist(timer_init,INIT_LEVEL_OTHER_HARDWARE);/srclibether.c(66):_initlist(ether_init, INIT_LEVEL_OTHER_HARDWARE);srclibcommand.c(79):_initlist(init_commands, INIT_LEVEL_OTH
13、ER_STUFF);/srcblobflash.c(194):_initlist(init_flash, INIT_LEVEL_OTHER_STUFF + 1);/srclibgeneric_io.c(109):_initlist(io_init, INIT_LEVEL_OTHER_STUFF + 1);srcblobinitcalls.c(51):_initlist(init_flash_io, INIT_LEVEL_OTHER_STUFF + 2);srcblobinitcalls.c(52):_initlist(init_part_io, INIT_LEVEL_OTHER_STUFF +
14、 2);srcblobinitcalls.c(53):_initlist(init_ram_io, INIT_LEVEL_OTHER_STUFF + 2);srclibtar.c(107):_initlist(init_tar_default_io, INIT_LEVEL_OTHER_STUFF + 2);srcblobpartition.c(374):_initlist(ptable_init, INIT_LEVEL_OTHER_STUFF + 2);srclibcf.c(208):_initlist(cf_default_io_init, INIT_LEVEL_OTHER_STUFF +
15、2);上面列表中的函数都是两个for语句可能做的,但具体会做哪几个,由编译时的配置决定。一般先执行最前面的两个和体系结构相关的:*_flash_driver、*_init_hardware。然后(公共的)6个加注释符的一般也是必须的。command.c里用了与init.c一样的机制_commandlist(fn, nm, hlp)把所有的命令制成一个表BLOBincludeblobcommand.h(56):#define _commandlist(fn, nm, hlp) BLOBsrcblobchkmem.c(240):_commandlist(ChkMem, chkmem, chkmem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- blob 分析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。