预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

S3c2410平台的移植学习文档 ――如何使kernel支持全新的ARM开发板 Author:BobZhang Mail:bob_zhang2004@163.com 定义: 假设我们以后的板子叫smdk-mxic0015,与smdk-s3c2410是并列的 内容简介: 重点讲讲kernel移植方面的,围绕这几个问题,来讨论: 为什么要移植?什么时候,可以不作移植,就可以直接把kernelrun到板子上? 怎么移植?我们mxic要做移植是作哪个层次的移植? 移植的时候,代码要改动多少?也就是移植的难度和工作量? 移植的时候要改或者添加哪些文件?也就是工作的内容 白手起家?还是可以抄袭s3c2410?当然要踩s3c2410的肩膀! 并以s3c2410为例,那个BenDooksben@simtec.co.uk是如何使kernel支持s3c2410开发板的?他都干了些什 么?我们应该怎么样抄写s3c2410代码的架构来实现portingkernel到mxic0015 kernel移植完后,u-boot如何配合?bootargs怎么写? kernel移植完后,如何作rootfs,怎么作rootfs(当然用busybox),大概讲讲流程和方法。 Index: 1.移植kernel 2.smdk2410开发板的启动代码分析(不同于一般的kernel初始化代码,比如 start_kernel()) 3.U-boot的参数设置 4.制作根文件系统 5.appendix:jk2410启动信息简单注释 引言: 虽然2.6.x的内核已经对s3c2410的平台提供了足够的支持,但是从学习的角度,我们仍然要对2.6.x是如何对 s3c2410提供支持的代码和框架进行学习和分析。只有深刻搞清楚了整个2410的框架,我们今后才有能力把一个干净 的kernelporting到mxic自己的板子上去。 分析的kernel代码:2.6.18.8 分析工具:sourceinsight 以下会有我自己的一些移植启示,我假设我们的目标板子名称是MXIC0015 第一部分s3c2410的框架部分及移植启示 1.1总体分析: -Æarch\arm\mach-s3c2410smdk2410开发板的支持代码 重要的文件:mach-smdk2410.cdevs.c都是重点分析的代码 另外,一些代码都是根s3c2410相关的比如:clock..cs3c2410-gpio.c,time.c这些在我们mxic自己的板子上都要实现, 所以代码也要看懂,以后都要在自己平台支持目录实现这些代码。 arch\arm\boot启动代码,对ARM平台通用的部分,当然也要在arch/arm/mach-mxic0015/Makefile.boot中定义 kernel的zreladdr的值(定义kernel的入口地址) 重点掌握zImage的生成过程,以及kernel自引导的部分(在另一份文档会有介绍) -Æinclude\asm-arm\arch-s3c2410 一些重要的头文件,比如一些CPU内部寄存器的地址定义等等。比如regs-rtc.h就详细定义了RTC的地址定义的 部分。 在比如irqs.h定义了smdk2410上面的中断号。 还有其他的一些driver程序,散步在driver的各个子目录里面。比如drivers/char/s3c2410-rtc.c 移植启示: 当我们portingkernel到mxic板子上的时候,可以完全遵循这个组织框架。可以先把整个目录copy过来,然后改名 成mxic0015,就可以针对自己的板子修改里面的.h和.c文件了。至于driver方面,也要完全使用 对于driver我们mxic0015也要提供一些,比如driver/char/mxic0015-rtc.cdrivers/char/mxic0015-wdt.c等等 ―――― 1.2kernel支持s3c2410平台的框架是怎么搭建起来的呢?也就是kernel如何实 现支持多种平台结构的呢? 总的来说,上面提到kernel目录结构: 比如对于arm平台,一般对于每种机制或者设备,都会有一个通用.h或者.c,在这些文件定义或者实现一 些通用的函数,在通用的函数里面再去调用具体的platform的同名的.h或者.c里面的函数。 举个例子,kernel如何实现通用的代码和具体的平台的联系的。 举个内存相关的例子,memory.h Î 存在一个通用的memory.h(include/asm/asm-arm/memory.h) 很多平台的memory.h,比如s3c2410平台,include/asm-arm/arch-s3c2410/memo