Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295985
  • 博文数量: 32
  • 博客积分: 665
  • 博客等级: 上士
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-25 11:20
文章分类

全部博文(32)

文章存档

2023年(1)

2021年(1)

2020年(2)

2018年(3)

2014年(1)

2013年(2)

2012年(9)

2011年(9)

2010年(2)

2009年(2)

分类: 嵌入式

2010-11-30 12:27:33

注意问题:
1.yaffs2 版本。
这个问题很重要,在网上下载的版本一般不好掌握其是否能真正支持2.6.36。办法是使用发布的git方法获得最新版,并且查看readme确认其支持2.6.36。yaffs有一个较大的变化,是在2.6.36内核发布之后的一段时间里出现的,主要就是patch-ker.sh多了一个参数,m/s 是选择multiversion支持,还是singleversion支持。

--------------------------------------------------------------------------------

更新[2012-2-26]:patch-ker.sh 用三个参数将yaffs2文件系统加入到内核代码树中。

patch-ker.sh c/l m/s [内核代码树目录]

第一个参数选c是拷贝文件到内核代码树,l是建立连接到代码树。功能差不多。

第二个参数m指的是让内核支持多个yaffs版本,有老yaffs和新yaffs,区别有block大小不一样等。

选s是让内核支持单个yaffs2版本,选择此项时,在内核menuconfig中出现的yaffs2文件系统配置比使用选项m要少一些。

--------------------------------------------------------------------------------

2.关于yaffs2的硬件ECC和软件ECC。
S3C2440本身硬件层面有ECC的功能。但可以通过设置寄存器来控制启用与否。在做内核配置时候,有一个类似hardware ECC的选项,在device drivers -> memory technology device (MTD) support -> nand device support -> nand flash support for samsung s3c SoCs -> samsung s3c nand hardware ECC。这个选项在使用yaffs时必须不能选择,如果选择,在读写flash芯片时,硬件ECC产生的信息会硬件性地存在oob上。而对于yaffs而言,oob是用于别的目的。如需ecc,则要在yaffs选项里面选择lets yaffs do it's own ecc。

3.关于时钟频率
的确如网上很多帖子上说的,这个需要改。这个频率是根据要移植到的目标主板上的s3c2440芯片所配备的晶振频率而定的。位置对于2.6.36而言,在 linux-2.6.36/arch/arm/mach-s3c2440/mach-smdk2440.c文件中,s3c24xx_init_clocks();函数的这个参数。修改为12000000。我这是12Mhz的晶振。

4.关于mach-type
machine type。这个东西很抽象,逻辑也很乱。字面意思:机器码,这个号码对于各个linux版本,定义都不同(这个号码是linux源代码编写者定义的)。参考你的linux-2.6.36/arch/arm/tools/mach-types中的说明。这些号码是判断机器是否对应内核程序的。这个东西的存在,是假设内核编译者要编译出一种mach-types中定义的一种机型的二进制目标程序。而固定在这个2进制程序中一个mach-type标识,用以说明我的这个2进制代码是用于我标识的这个机型的。硬件提供者拿来这个程序,抽取其中的mach-type标识,判断是否和自己的硬件的mach-type匹配。若不匹配,就不继续运行。
而硬件芯片本身并没有固化的mach-type标识,硬件层面是靠bios中存储的mach-type来和linux内核二进制代码中的mach-type标识匹配的。这就是vivi,u-boot中要存一个mach-type的原因。
而我们既要编译内核,又要配置bios,所以,两边的mach-type是多少号码,都无所谓,让两边都一样的就可以了。

5.关于以太网驱动。
开发板大都使用两种以太网控制器。cs8900和dm9000。驱动程序2.6.36已经有了dm9000的官方代码了。cs8900要另外patch。或者自己编写。这个细节很多。有时间再在这里补充。

6.关闭vgacon
内核默认配置有vga,实际上2440的vga接口是转接的,或者另外使用fpga芯片做的。不是直接的外围控制芯片。一般在内核配置里去掉自带的vga选项。

阅读(2685) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-02-07 12:54:53

我下到新的yaffs2源码了,我也没搞明白这两个m s参数什么意思,都试了一下,都可以正常编进内核,但是mkyaffs2image编译不过去,一堆内核头文件找不到,指定了include路径也会出很多错,真麻烦,不知道楼主解决了没有?加我QQ交流一下吧:95259408

chinaunix网友2010-12-23 11:18:31

楼主你好,移植到2.6.36,请问用参数m还是s 是根据什么确定的呢? 即选择multiversion支持表示什么含义,选择singleversion支持又表示什么含义?

chinaunix网友2010-12-02 12:15:18

你好 能发个新版的 yaffs补丁给我吧 jhd08@126.com

chinaunix网友2010-12-02 12:15:18

你好 能发个新版的 yaffs补丁给我吧 jhd08@126.com