μClinux的定制、移植和加载

lycatnet 贡献于2012-06-30

作者 Roger  创建于2012-06-22 01:11:00   修改者Roger  修改于2012-06-30 10:24:00字数4673

文档摘要:μClinux的定制、移植和加载一、实验目的和要求1、掌握内核交叉编译环境的建立和使用;2、掌握μClinux内核的配置和裁剪;3、了解μClinux的启动过程。二、实验内容1、准备μClinux内核源代码包;2、建立μClinux交叉编译环境;3、配置和编译μClinux内核和romfs根文件系统;4、下载并运行μClinux;
关键词:

 μClinux的定制、移植和加载 一、实验目的和要求 1、掌握内核交叉编译环境的建立和使用; 2、掌握μClinux内核的配置和裁剪; 3、了解μClinux的启动过程。 二、实验内容 1、准备μClinux内核源代码包; 2、建立μClinux交叉编译环境; 3、配置和编译μClinux内核和romfs根文件系统; 4、下载并运行μClinux; 三、实验原理 1、在主机的RedHat 9.0系统下,安装uClinux-dist内核源代码发行包和编译内核用的交叉编译器arm-elf-tools; 2、 对μClinux进行配置; 3、 配置完成后进行编译,生成μClinux内核和romfs根文件系统的映像文件uclinux_rom.bin和romfs.img; 4、 使用U-boot的tftp协议将映像文件下载到实验平台上运行。 四、实验器材 1. 个人笔记本一台(带Rad Hat 9.0的虚拟机) 2. TEB-44B0+嵌入式系统实验平台一套(包括Jlink一个及配套软件,以太网线一根,串口转USB线一根) 3. Tftp服务器 4. 超级终端。 五、操作方法与实验步骤 1. μClinux内核源代码包的准备 1) 在Red Hat 9.0环境下,将uclinux-dist-teb.tar.gz复制到opt目录下: cd /opt 2) 解包: tar zxvf uclinux-dist-teb44b0.tar.gz //等待几分钟! 3) 查看解压出来的文件: ls 可以看到解压后生成一个新目录uClinux-dist,这个目录就是μClinux源代码根目录。 4) 解压后用所给的led.c文件替换uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X 目录下的leds.c文件 2. μClinux交叉编译环境的建立和使用 本实验使用arm-elf-tools交叉编译环境arm-elf-tools-20040427.sh。执行如下命令进行安装: 1) 将文件arm-elf-tools-20040427.sh 拷贝到opt目录下: cd /opt //等待一会儿! 2) 执行sh文件: sh arm-elf-tools-20040427.sh //等待一会儿! 3) 查看安装后的文件: ls /usr/local/bin/arm-elf-* 可以看到arm-elf-gcc等编译工具已经安装到你使用的机器上了。 3. μClinux内核的配置和编译 1) 配置μClinux (1) 进入μClinux配置(uClinux v3.1.0 Configuration): cd /opt/uClinux-dist make menuconfig 如下图所示。 (2) 选中“Kernel/Library/Default Selection à”,敲空格进入。选中内核配置项和用户选项,如下图所示。 按两次ESC退出,敲回车保存设置。 (3) 进入内核配置(Linux Kernel v2.4.24-u0c Configuration),如下图所示 。 实验平台μClinux内核配置选项的缺省配置为: a) 系统类型配置System Type中 (Samsung)ARM system type [*] Set flash/sdram size and base addr (0C000000)(S)DRAM Base Address (00800000)(S)DRAM Size (00000000) FLASH Base Address (00400000) FLASH Size (RAM) Kernel executes from (S3C44B0X-MBA44) Board Implementation b) 通用设置General setup中 [*] Networking support (ELF) Kernel core(/proc/kcore) format [*] Support μClinux FLAT format binaries [*] Support FLAT format compressed binaries [*] Timer and CPU usage LEDs [*] Timer LED [*] CPU usage LED c) 网络环境设置Networking option中 [*] packet socket [*] Unix domain socket [*] TCP/IP networking d) 网络设备支持Network device support中 [*] Network device support? Ethernet(10 or 100Mbit)中: [*] Ethernet (10 or 100Mbit) [*] Other ISA cards [*] NE2000/NE1000 support [*] 16Bits mode support e) 控制台设备Console drivers中 [*] Support Frame buffer devices Frame-buffer support中 [*] Support for frame buffer devices (EXPERIMENTAL) [*] Samsung S3C44B0X built-in LCD controller frame buffer support [*] Advanced low level driver options [*] 8 bpp packet pixels support [*] support only 8 pixels wide fonts f) 块设备Block devices中: <*> RAM disk support (1024) Default RAM disk size <*> Initial RAM disk(initrd) support <*> ROM disk memory block device (blkmem) (AMD) FLASH type (AUTO) FLASH size (AUTO) FLASH bit width (4) 进入用户选项配置。如下图所示: 实验平台用户配置选项的缺省配置为: a) Core Applications中 [*] init [*] enable console shell (Sash) Shell Program [*] simple history(sash) [*] expend [*] version b) Network Applications中 [*] ifconfig [*] ping c) Mscellaneous Applications中 [*] cat [*] cp [*] ls d) BusyBox中 [*] BusyBox [*] cat [*] cp [*] echo [*] ifconfig [*] killall [*] ls [*] mkdir [*] mknod [*] mount [*] ping [*] rm [*] rmdir [*] rmnod [*] sleep [*] umount [*] vi e) Mscellaneous Configuration中 (128K) RAMFS Image 其余选项这里暂未选中,建议暂不改变缺省配置,直接使用。 按ESC,回车,保存用户选项 2) 编译μClinux 依次执行如下指令: make dep //建立依赖关系 make clean //(非必需) make lib_only make user_only make romfs make image //第一次编译或前面执行了make clean,忽略此处提示的两个错误 make 编译完成后,会在/opt/uClinux-dist/images目录下生成3个映像文件:uclinux_ram.bin、 uclinux_rom.bin和romfs.img。这3个文件中,后两个是我们要向实验平台的NOR FLASH AM29LV320DB中移植的。第一次编译的过程较慢,再次编译时速度会大大提高! 4. 下载μClinux 1) 安装U-boot (1) 用J-Link链接笔记本和实验平台。 (2) 打开 J-Flash ARM,如下图 (3) 点击 File -> New Project (4) 点击 Options -> Project settings (5) 点击CPU (6) 选择Core -> ARM7 -> Little endian,勾上Check core ID,在ID栏输入1F0F0F0F 勾上Use target RAM(faster),在Addr栏输入10000000,速度选择8KB 修改后如下图所示 (7) 点击Flash (8) 去掉Automatically detect flash memory前面的勾 (9) 点击Select flash device (10) 选择AMD Am29LV320DB,点击OK 点击确定 (11) 点击File -> Save Project,输入工程名为TEB-44B0+.jflash,点击保存 (12) 点击File -> Open (13) 选择要下载的映像文件(这里我们选择u-boot.bin),点击打开 (14) 点击Target -> Auto,弹出窗口 (15) Flash擦除、编程、校验后,弹出窗口 (16) 点击确定,Flash编程完毕。 2) 下载μClinux (1) 用以太网线连接主机和实验平台的核心板;并取一根串口转USB线,一端连接实验平台上的串口端口,另一端连接主机USB端口。 (2) 安装并配置Tftp服务器 a) 在电脑上安装Tftp服务器 b) 配置主机IP地址为192.168.0.10 c) 打开Tftp服务器,如下图所示: d) 点击Browse按钮,选择uclinux系统镜像文件所在的路径; e) 在Server interface中选择地址为192.168.1.10,配置完毕。 (3) 打开超级终端,复位实验平台,在5秒内按回车键,进入U-boot的命令提示行,如下图所示: a) 下载映像文件uclinux_rom.bin到开发板的SDRAM中,在超级终端中输入命令: tftp 0c008000 uclinux_rom.bin 如下图所示: b) 擦除FLASH中指定扇区(我们的实验平台设定内核映像在FLASH中的烧写地址应从0x00050000开始。) erase 00050000 000fffff c) 拷贝映像文件uclinux_rom.bin到FLASH中。 cp.b 0c008000 00050000 a3e42 如下图所示: d) 下载映像文件romfs.img 到SDRAM中 tftp 0c400000 romfs.img e) 擦除FLASH中指定扇区(我们的实验平台设定根文件系统映像在FLASH中的烧写地址应从0x00200000开始)。 erase 00200000 0027ffff f) 拷贝映像文件uclinux_rom.bin到FLASH中。 cp.b 0c400000 00200000 78c00 如下图所示: (4) 按下实验板上的重启键,进入μClinux系统,显示如下- 六、实验结果与分析 实验完成,成功进入μClinux操作系统。 七、问题与建议 问题1:Jlink后插上后不能连接实验平台 原因:Jlink在加电情况下随意插拔,导致Jlink中的固件损坏。 解决方法:重新烧制Jlink的固件,步骤如下: 阅读《改进版JLink用作开发板的说明手册(重烧JLINK固件的方法).pdf》,按一下步骤操作 a) 安装sam-ba b) 拆开外壳,可以看到J1处3个插针,其中J1的第一脚(靠近双色Led灯/背面为方焊盘)为“TST”,第三脚(靠近USB方口座)为“ERS” c) 把JLINK插入USB口,用跳线帽短接“ERS”与中间的插针,保持20秒 d) 取下JLINK,用跳线帽短接“TST”与中间的插针 e) 插上JLINK,保持15秒 f) 取下JLINK,取下跳线帽 g) 烧写v8.bin 问题2:如何向μClinux操作系统下载应用程序? 这个问题还没来得及解决,实验箱就被收走了,遗憾。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档