当前位置:首页 > 单片机 > 单片机
[导读]主机:UBUNTU10.04LTS,交叉工具链为:arm-linux-gcc 2.95,安装目录:/usr/local/arm/2.95.3/bin目标板:Edukit-III,S3c2410子板问题描述:由于英蓓特公司的Edukit-III实验箱自带的LINUX为2.4版本,鉴于现在LINUX2.6

主机:UBUNTU10.04LTS,交叉工具链为:arm-linux-gcc 2.95,安装目录:/usr/local/arm/2.95.3/bin

目标板:Edukit-III,S3c2410子板

问题描述:由于英蓓特公司的Edukit-III实验箱自带的LINUX为2.4版本,鉴于现在LINUX2.6的内核比较流行,因此想在Edukit-III上面移植LINUX2.6.18,在移植LINUX内核之前,首先应该移植VIVI,移植后的VIVI支持在NAND FLASH中启动LINUX,下面把移植过程简单记录一下。

【1.获得VIVI源码】

由于MIZI公司被WIND RIVER收购,因此网上以前提供的VIVI源码下载链接已经无效,FTP下载站点也找不到了VIVI的源码,所以这次就利用了Edukit-III实验箱上提供的VIVI源码来做移植。

【2.NAND FLASH分区划分】

一般情况下,NAND FLASH分为4个区,分别烧写vivi,param,kernel,root,其中vivi为编译好的vivi二进制文件;param为传递到linux kernel的参数,kernel为Linux内核,root为根文件系统,一般情况下这种文件系统为只读的cramfs文件系统,由于该系统不能写,因此这样的文件系统不太方便往开发板下载应用程序,所以希望在NAND FLASH分区中增加一个jffs2文件系统(该分区名字user),这样就可以往jffs2文件系统中写入自己开发的应用程序了。最终NAND FLASH被分为了5个区,分别为:vivi,param,kernel,root,user,这5个区在NAND FLASH中的起始地址和大小如下表所示

Name

offset

size

size

vivi

0

0x00020000128kparam0x000200000x0001000064kkernel0x000300000x002d00002M+832Kroot0x003000000x003000003Muser0x006000000x00a0000010M

注意,Edukit-III使用的NAND FLASH类型为K9F5608U0,使用Edukit-III提供的Embest Onlie Flash Programmer,打开NAND FLASH烧写时的vivi配置文档(S3C2410&NandFLash_vivi.cfg),可以看到,该NAND FLASH一共有1025个sector,每个sector大小为16K,因此在规划NAND FLASH分区大小的时候,分区尺寸应该为16K的整数倍。按照这样的分区规划,如果制作出来的linux kernel或者文件系统比这个分区的尺寸要大,那么就要对该分区做出调整,重新编译vivi,或者对linux kernel、文件系统进行调整,使得能够适合分区大小。

每个分区的大小是这样考虑的,vivi编译出来一般70K大小,所以第一个vivi分区设置为128K,足够放得下vivi了,param为向LINUX内核传递参数,这个分区64K大小应该够用,kernel分区为存放linux2.6.18内核,该内核编译出来一般2M左右,所以用2M+832K的大小,足够放得下LINUX2.6.18内核,root存放cramfS文件系统,cramfs文件系统为高压缩文件系统,制作出来后一般为2M左右,剩下的分区就全部给user的jffs2文件系统。

【3.VIVI移植过程】

首先把VIVI源码(vivi-20030929.tar.bz2)解压到/usr/src目录下

root@VMUBUNTU:/usr/src# tar xjvf vivi-20030929.tar.bz2

进入到vivi源码目录

root@VMUBUNTU:/usr/src# cd vivi
root@VMUBUNTU:/usr/src/vivi#


(1)修改该目录下的Makefile文件,

第17行改为:LINUX_INCLUDE_DIR= /usr/local/arm/2.95.3/include,该路径为交叉编译工具链的Include目录

第25行改为:CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-,该路径为交叉编译工具链的路径

第88行改为:ARM_GCC_LIBS= /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3,该路径为交叉编译工具链的库所在的目录.保存退出

(2)修改arch/s3c2410/smdk.c,设置NAND FLASH的分区信息,依照上表对NAND FLASH的分区规划,修改如下:

#ifdefCONFIG_S3C2410_NAND_BOOT
mtd_partition_t default_mtd_partitions[]={
{
name:"vivi",
offset:0,
size:0x00020000,
flag:0
},{
name:"param",
offset:0x00020000,
size:0x00010000,
flag:0
},{
name:"kernel",
offset:0x00030000,
size:0x002d0000,
flag:0
},{
name:"root",
offset:0x00300000,
size:0x00300000,
flag:MF_BONFS
},{
name:"user",
offset:0x00600000,
size:0x00a00000,
flag:MF_JFFS2
}
};


其中这里的flash表示分区的标志,这个标志表示了这个分区的用途。通过source insight可以看到,这些标志定义在vivi/include/Priv_data.h

#defineMF_LOCKED 0x00000001
#defineMF_MUSTERASE 0x00000002
#defineMF_BONFS 0x00000004
#defineMF_JFFS2 0x00000008
#defineMF_ISRAM 0x00000010


【4.配置编译运行vivi】

移植完成后,在vivi目录下执行配置编译vivi命令,会在vivi目录下生成vivi二进制文件

root@VMUBUNTU:/usr/src/vivi#make distclean
root@VMUBUNTU:/usr/src/vivi#make menuconfig
root@VMUBUNTU:/usr/src/vivi#make


会在vivi目录下生成vivi二进制文件,通过ls命令查看

root@VMUBUNTU:/usr/src/vivi# ls
arch COPYING CVS Documentation drivers include init libMakefile Rules.make scripts test utilvivivivi-elf vivi.map


打开Euukit-III配套的FLASH烧写程序Embest Online Flash Programmer,先载入烧写VIVI的FLASH配置文档(S3C2410&NandFLash_vivi.cfg),把vivi烧写到NAND FLASH中。注意,烧写之前,一定要把s3c2410子板的SW104跳线短接。烧写完成,重新启动开发板,可以在Windows的超级终端中看到VIVI的如下启动信息

VIVI version 0.1.4 (root@VMUBUNTU) (gcc version 2.95.3 20010315 (release)) #0.1.
4 Sat Oct 23 15:33:59 CST 2010
MMU table base address=0x33DFC000
Succeed memory mapping.
NAND device: Manufacture ID: 0xec, Chip ID: 0x75 (Samsung KM29U256T)
Could not found stored vivi parameters. Use default vivi parameters.
Press Return to start the LINUX now, any other key for vivi
type"help"for help.

在vivi提示符下,输入part show命令,可以看到Flash的分区信息如下

vivi> part show
mtdpart info. (5 partitions)
name offset size flag
------------------------------------------------
vivi : 0x00000000 0x00020000 0 128k
param : 0x00020000 0x00010000 0 64k
kernel : 0x00030000 0x002d0000 0 2M+832k
root : 0x00300000 0x00300000 4 3M
user : 0x00600000 0x00a00000 8 10M
vivi>


表示VIVI移植成功,下一步就要做LINUX2.6.18内核移植了。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭