下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、arm+linux移植中一些需要注意的问题内核中的参数是内核提供的,在配置内核时指定,而u-boot提供的则在u-boot启动时传递到内核取代内核提供的。u-boot的参数传递利用了三个通用寄存器r0,r1,r2。u-boot在启动的过程中把参数放到3个寄存器中,到内核启动时再把寄存器中的参数取出。普通我们需要通过u-boot/tools/名目下的mkimage制作uimage,用法bootm指令举行加载,注重go指令是不传递内核参数的。mkimage-x-a arch-o os-t type-c comp-a addr-e ep-n name-d data_file:data_file.im
2、age选项:-a:set architecture toarch/用于指定cpu类型,比如-o:set operatingsystemtoos/用于指定操作系统,比如-t:set image type totype/用于指定image类型,比如kernel-c:set compression typecomp/指定压缩类型-a:set load address toaddr(hex)/指定image的载入地址-e:set entry point toep(hex)/内核的入口地址,普通为image的载入地址+0x40(信息头的大小)-n:set image name toname/image在
3、头结构中的命名-d:use image data fromdatafile/无头信息的image文件名-x:set xip(execute in place)/设置执行位置例如:mkimage-nlinux--a arm-o linux-t kernel-c none-a 0x30008000-e 0x30008040-d zimage uimage.img注重内核的加载地址是内存的起始地址+0x8000,0x40是64k的头部,是mkimage加上去的,0x30008040是内核第一条命令所在的地址。u-boot参数链表在内存中的地址是0x30000100。r0的值是0,r1
4、是u-boot传递过来的机器码,r2是参数链表在内存中的物理地址。修改u-boot中我们的开发板的配置文件/include/configs/te2440ii.h,增强如下宏定义,使其能向内核传递参数(在这里主要是console参数,否则无法在控制台看到启动信息):define config_setup_memory_tagsdefine config_initrd_tagdefine config_cmdline_tagdefine config_bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc mem=64m devfs=mount co
5、nsole=tty0 console=ttysac0,115200上面的操作完成后,重新编译u-boot,下载到nand中,重新启动u-boot后,把我们编译生成的uimage文件下载到内存的0x30008000地址处,就可以用bootm指令来手动引导内核了(执行bootm 0x30008000)。2.机器码内核会在编译链接过程中,将各种处理器内核描述符组合成表,接着从机器描述符表中查询有无r1寄存器指定的机器码,假如没有就将退出,所以这也解释了为什么在u-boot中机器码一定要和内核中的机器码全都,否则内核就无法启动。先看看u-boot的机器码和linux的机器码是由什么地方打算的,u-bo
6、ot中的机器码在u-boot的board/samsung/te2440ii/te2440ii.c中打算。/* arch number of smdk2410-board */gd-bd-bi_arch_number = mach_type_smdk2410;查看u-boot/include/asm-arm/mach-type.h文件有:define mach_type_smdk2410 193define mach_type_s3c2440 362linux中打算机器码的就是下面那个机器描述符。machine_start(smdk2440,smdk2440)/* maintainer: ben
7、 dooks */.phys_io=_pa_uart,.io_pg_offst=(u32)s3c24xx_va_uart)18)&0xfffc,.boot_params=s3c2410_sdram_pa+0x100,/注重:这个地址就是与u-boot中参数链表在内存中的物理地址相对应.init_irq=s3c24xx_init_irq,.map_io=smdk2440_map_io,.init_machine=smdk2440_machine_init,.timer=&s3c24xx_timer,machine_end查看内核名目下的arch/arm/tools/mach-types.h文件,
8、有:smdk2410 arch_smdk2410 smdk2410 193s3c2440 arch_s3c2440 s3c2440 362smdk2440 mach_smdk2440 smdk2440 1008关键字是s3c2440,所以我们上面看到的是0x000000a8(362)。所以,我们这里不去修改内核,而是挺直修改u-boot 的 board/samsung/ok2440v3/ok2440v3.c文件,如下:/* arch number of smdk2410-board */gd-bd-bi_arch_number = mach_type_s3c2440;3.uh w进入控制台,u
9、会显示成root,h会显示成hostname,w会显示成当前路径。4. “hit any key to stop autoboot:”doc/readme.autoboot里说得很清晰,自动引导惟独需要最基本的两个配置:config_bootdelay和config_bootcommand:the basic autoboot configuration options are documented in the mainu-boot readme. see it for details. they are:bootdelaybootcmdconfig_bootdelayconfig_boot
10、command根名目下的readme文件里对这几个参数有解释:boot delay: config_bootdelay - in secondsdelay before automatically booting the default image;set to -1 to disable autoboot.bootcmd see config_bootcommandautoboot command:config_bootcommandonly needed when config_bootdelay is enabled;define a command string that is aut
11、omatically executedwhen no character is read on the console interfacewithin boot delay after reset.由此,我们只需要在自已的开发板的配置文件里/include/configs/te2440ii.hdefine config_bootdelay 5define config_bootcommand nand read 0x30008000 0x00500000 0x00300000; bootm 0x30008000重新编译u-boot,ok了,嘿嘿。6.假如tftp浮现t和,那是tftp不断重启,
12、据说是网卡还没预备好的,所以将tftp超时的时光加大。在net/tftp.c中,修改这句:define timeout 200000ul /* millisecs to timeout for lost pkt */7.我用法的指令1)print或printenv可以打印出环境变量2)setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc mem=64m devfs=mount console=tty0,ttysac0,115200这样用法setenv 可以设置环境变量3)setenv bootargs 这样用法setenv 挺直加环境变量的名字可以删除环境变量4)saveenv 保存环境变量,否则复位后,上次用setenv设置的环境变量就不在了。5)tftp 0x30008000 01:u-boot.bin从ip地址为01的tftp服务器处下载 u-boo.bin文件到0x30008000处。6)nand erase 0x0 0x30000擦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古赤峰敖汉旗招募就业见习人员的79人考试参考题库及答案解析
- 2026中国石化贵州分公司招聘3人考试备考试题及答案解析
- 2026浙江杭州科技职业技术学院招聘63人考试参考试题及答案解析
- 江西事业单位定向招聘退役大学毕业生士兵!考试备考题库及答案解析
- 2026黑龙江鸡西麻山区人力资源和社会保障局招聘公益岗位就业人员的1人考试参考题库及答案解析
- 2026年延安市事业单位招聘(502人)考试备考题库及答案解析
- 2026天津师范大学第一批招聘(博士层次专业技术岗位)78人考试参考试题及答案解析
- 2026青海海东市第三中学招聘3人考试参考试题及答案解析
- 2026西藏韶华人力资源服务有限公司残疾人专项招聘2人考试参考题库及答案解析
- 2026河南济源夏都医院招聘2人考试参考试题及答案解析
- 2026及未来5年中国抽纱刺绣工艺品行业竞争现状及投资前景趋势报告
- 【地理】2025年1月浙江省普通高校招生选考科目考试试题(精校版)
- 2026年及未来5年市场数据中国服务器密码机行业发展前景预测及投资规划建议报告
- 2025动物防疫专员试题及答案
- 单元复习:解码中国-我国区域差异的深度整合与素养提升
- 心肺复苏术护理配合要点
- 2026年辽宁装备制造职业技术学院单招职业适应性测试题库带答案详解
- 中医特色护理在精神科的应用
- 2025年降噪同写考试题及答案
- 风力发电运输合同范本
- 重难点22 立体几何中的外接球、内切球问题(举一反三专项训练)(全国通.用)(原卷版)-2026年高考数学一轮复习举一反三系列
评论
0/150
提交评论