下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州左海高铁有限公司(第二次)招聘3人参考考试试题及答案解析
- 2025福建福州新投新筑开发建设有限公司市场化选聘职业经理人1人备考笔试题库及答案解析
- 2025广西北海银滩开发投资股份有限公司招聘2人备考考试试题及答案解析
- 2025下半年四川凉山州西昌市教育系统考核引进教师98人备考笔试题库及答案解析
- 深度解析(2026)《GBT 26103.3-2010GCLD 型鼓形齿式联轴器》(2026年)深度解析
- 深度解析(2026)《GBT 26040-2010锡酸钠》(2026年)深度解析
- 2025广东广州市卫生健康委员会直属事业单位广州市第十二人民医院第一次招聘26人模拟笔试试题及答案解析
- 2026贵州安顺市平坝第一高级中学公费师范生及高层次人才引进2人(第二批)备考考试题库及答案解析
- 深度解析(2026)《GBT 25793-2010反应黄KN-GR 150%(C.I.反应黄15)》(2026年)深度解析
- 2025福建厦门市集美区寰宇实验幼儿园招聘1人考试参考试题及答案解析
- 2025四川航天川南火工技术有限公司招聘考试题库及答案1套
- 2025年度皮肤科工作总结及2026年工作计划
- (一诊)成都市2023级高三高中毕业班第一次诊断性检测物理试卷(含官方答案)
- 四川省2025年高职单招职业技能综合测试(中职类)汽车类试卷(含答案解析)
- 2025年青岛市公安局警务辅助人员招录笔试考试试题(含答案)
- 2024江苏无锡江阴高新区招聘社区专职网格员9人备考题库附答案解析
- 科技园区入驻合作协议
- 电大专科《个人与团队管理》期末答案排序版
- 山东科技大学《基础化学(实验)》2025-2026学年第一学期期末试卷
- 2025西部机场集团航空物流有限公司招聘笔试考试备考试题及答案解析
- 2025年吐鲁番辅警招聘考试题库必考题
评论
0/150
提交评论