ARM+LINUX移植中一些需要注意的问题_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论