免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1385 | 回复: 0

omap 5912 移植 [复制链接]

论坛徽章:
0
发表于 2007-08-08 21:26 |显示全部楼层
OMAP5912开发板的linux2.6内核移植
作者:毛勇
一:搭建交叉编译环境
由于搭建交叉编译环境比较繁琐,建议大家用已经搭建好的交叉编译环境3.3.2的。 (本实验用的就是3.3.2的arm平台的交叉编译环境)。
一 步骤:
1. 解压文件 命令:
tar jxvf obsolete-gcc-3.3.2.tar.bz2
(obsolete-gcc-3.3.2.tar.bz2下载地址:
http://linux.omap.com/pub/toolchain/

2. 把解压的文件夹中的 “3.3.2”文件夹拷贝到 /usr/local/arm目录下(如果没有arm目录就
新建arm目录,但是一定要是拷贝到这个目录,不然不能运行)。
3. export PATH=/usr/local/arm/3.3.2/bin:$PATH
------------------------------ 补 充 -------------------------------------------------
为了不用每次用交叉编译环境时都输入:export PATH=/usr/local/arm/3.3.2/bin:$PATH 可以在 /目录建立个env.sh文件。(偶是懒人,呵呵懒人总的找个偷懒的方法)
env.sh内容如下:
################ env.sh 文件内容 ############################################
!/bin/sh
export PATH=/usr/local/arm/3.3.2/bin:$PATH
################env.sh 文件内容 ############################################
以后要用到交叉编译环境的时候只要在你的shell中输入:
source /env.sh 或 sh /env.sh
------------------------------ 补充 结束 ------------
4. 如果输入 arm- 然后按下tab键能自动补全命令 arm-linux-  说明搭建成功
二:编译uboot
一 编译uboot1.1.1
1. export PATH=/usr/local/arm/3.3.2/bin:$PATH
2. make omap5912osk_config
3. make CROSS_COMPILE=arm-linux-
会出现错误:(如下)
---------------------------------- 显示出错 ----------------------------------------
No rule to make target `hello_world.srec', needed by `all'. Stop.
------------------------------------ 出错显示结束 ----------------------------------
===================== 解决方法 ==================================================== 解决方法:把example文件夹下的Makefile中的
第114行
%.srec: % 改成: %.srec: %.o
第117行的 %.bin: % 改成
%.bin: %.o
===================== 解决方法 结束 ===============================================
4. make CROSS_COMPILE=arm-linux-          如果不出错的话可以生成需要u-boot.bin

三 下载 bootloader到开发板
以上介绍了u-boot 的编译,以及可能出现的错误。这一小结介绍怎样把编译好的bootloader下载到我们的开发板(型号TMDSOSK5912)。bootloader烧写工具Flash Recovery Utility只能烧写 rev C版的。rev D版的不能烧。
方法1:用ccs下载 用ccs下载(略:由于本人没有实验用这种方法)。
---------------------------------- 注意事项 ----------------------------------------
用ccs下载,要开发板上有bootloader,裸机连不上ccs。合众达仿真器的一个bug。
------------------------------------ 注意事项结束 -----------------------------------
方法2:用u-boot下载 步骤:
1. 先要搭建tftp服务器 (linux下tftp搭建方法不在本文之内,请参考别的说明书)
---------------------------------- windows 下搭建TFTP的方法 -------------------------
1. 下载TFTP Server
2. 进入TFTP Server 目录 eg: D:\Tools\TFTP Server
3. 双击TFTPSRV.EXE 如果有Windows防火墙的话,跳出防火墙请点解除阻止。
4. 把要下载的文件拷贝到TFTP Server所在目录(就这么简单)
-------------------------------- windows 下搭建TFTP的方法 结束 ----------------------
2. setenv ipaddr 192.168.0.2 (开发板上,也就是在minicom 或模拟终端环境中输入)
3. setenv serverip 192.168.0.1 (开发板上,也就是在minicom 或模拟终端环境中输入)
4. Setenv netmask 255.255.255.0 (开发板上,也就是在minicom 或模拟终端环境中输入)
5. setenv ethaddr 00:0E:99:04:09:03 (开发板上,也就是在minicom 或模拟终端环境中输入)
6. Saveenv            (保存刚才的改变)
===================================================================================
---------------------------------- 显示 -------------------------------------------
Saving Environment to Flash... . done Un-Protected 1 sectors Erasing Flash... . done Erased 1 sectors Writing to Flash... done . done /tmp/ccHjo33o.s: Assembler messages: /tmp/ccHjo33o.s:3167: Error: .err encountered make[1]: *** [mm/page_alloc.o] Error 1
make: *** [mm] Error 2 Protected 1 sectors
------------------------------------ 显示 结束 -------------------------------------
错误原因: u-boot写保护。 解决方法: protect off 1:0 (见步骤9)

7. ifconfig eth0 192.168.0.1 up
     (linux主机上,即在电脑上设置,如果是Windows的TFTP请到本地连接修改ip地址)
8. tftpboot 0x10000000 u-boot.bin
   (把bootloader下载到内存中,注意看下载文件的大小 xxxx,xxxx是16进制的) 当下载完成,将会显示下载文件的大小(16进制,在本实验中大小是192c0) 注意这个数字,下面将会用到。

------------------------------------ 显示 -----------------------------------------
Using MAC Address 00:01:08:07:00:00 TFTP from server 192.168.0.1; our IP address is 192.168.0.2 Filename 'u-boot.bin'. Load address: 0x10000000 Loading: ##################### done Bytes transferred = 103104 (192c0 hex)
------------------------------------ 显示 结束 -------------------------------------
9. protect off 1:0 (取消保护0块保护,为了下面擦写0块) 10. erase 1:0 11. cp.b 0x10000000 0x0 xxxx (xxxx为刚才7。提到的文件大小(16进制)本实验中是192c0,此数将会根据不同的编译大小不一样) eg: cp.b 0x10000000 0x0 192c0 用minicom 或在windows 用模拟终端连上开发板,按住键盘空格键,后重启开发板,你会进入uboot
------------------------------------ 显示 -----------------------------------------
U-Boot 1.1.1 (May 15 2007 - 15:08:58) CPU: OMAP162123 at 96.0 MHz (DPLL1=96.0 MHz) Board: OSK5912 DRAM: 32 MB Flash: 32 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
OMAP5912 OSK #
------------------------------------ 显示 结束 -------------------------------------
方法三:linux下用omapfl工具下载
1. ./omapfl 2nd.bin osk-u-boot.bin (linux环境)
------------------------------------ 显示 -----------------------------------------
OMAP found, trying to configure it OMAP error, retrying OMAP found, trying to configure it OMAP 1st boot contacted, sending 2nd boot Sent 4180 bytes to OMAP Flash found: Intel 28F128J3 Program stored in flash: 103104 bytes
------------------------------------ 显示 结束 -------------------------------------
===================================================================================
注意: 1. 要把jp3 的靠电源的两个引脚,连接使1,2相连(否则下载不了),连接完记得把把那个把插销插回原来的位置使2,3相连。 2. 连接上后按下reset(开发板上)按钮,开始下载,到完成 完成后,就可以用minicom或其他模拟终端连接上你的开发板
==================================================================================
三:编译linux内核
======================================================================================= 内核下载地址:
http://www.kernel.org/
补丁下载地址:
http://www.muru.com/linux/omap/
http://www.muru.com/linux/omap/patches/
http://www.muru.com/linux/omap/patches/old/
注意:此处用到的编译器版本为 4.2.0 下载地址:
http://www.codesourcery.com/gnu_toolchains/arm/download.html
选  ARM EABI  和 IA32  GNU/linux
===================================================================================
1. cd /usr/src/
2. tar -xjvf ${DOWLOADDIR}/linux-${VERSION}.tar.bz2
3. cp ${DOWLOADDIR}/patch-${VERSION}-omap1.bz2
4. bunzip2 patch-${VERSION}-omap1.bz2
5. cd linux-${VERSION}/
6. cat ../patch-${VERSION}-omap1 | patch -p1
7. make omap_osk_5912_defconfig
8. make xconfig
9. make CROSS_COMPILE=arm-none-eabi-
10. 运行:
arm-none-eabi-objcopy -O binary -R .note -R .comment -S \     arch/arm/boot/compressed/vmlinux linux.bin
   后可以生成:linux.bin文件
===================================================================================
注意:是arch/arm/boot/compressed/vmlinux目录下的vmlinux ===================================================================================

11. gzip -9 linux.bin
-----------------------------------------------------------------------------------
${U-BOOTDIR}/tools/mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n 'Linux Kernel Image' -d linux.bin.gz uImage.cc (注意:这个命令不能没有换行)
也可把 mkimage拷贝到 /usr/bin目录  以后就用下面命令就可以了。
mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n 'Linux Kernel Image' -d linux.bin.gz uImage.cc
-----------------------------------------------------------------------------------

===================================================================================
注意: ${U-BOOTDIR} 表示 刚才编译uboot的目录。Eg:u-boot1.1.1目录 ===================================================================================
13. 创建可以uboot可以下载的内核 ./mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n "Linux Kernel Image" -d linux.bin.gz uImage.cc 会生成 uImage.cc文件 ===================================================================================
如果用命令 : file uImage.cc 看到如下结果说明成功: uImage.cc: PPCBoot image ===================================================================================

四:文件系统制作
一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了,现在内核中都不支持devfs了,用udev代替)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 用到的库文件而烦。Busybox 之所以比较难编译,主要是 busybox 和交叉编译工具的版本搭配问题, 在这里我推荐一个搭配:
busybox-1.1.3+arm-linux-gcc-3.3.2 busybox的制作,建议用交叉编译环境 3.3.2,和 busybox1.1.3 。本人编译了1.5.1的 和1.6的,用静态编译没问题1.4.2的要用动态编译拷贝了库还是不能用很郁闷的事。3.4.1的编译器,如果不行的话换高版本的。
另外就是 busybox一定要改Makefile文件,改是不难的,是人都会吧,那就不说了。如果不会网上找下。
或看我在北软的博客上的文章上面有详细的说明。
http://bbs.ss.pku.edu.cn/ss/index.php/5836/action_spacelist_type_blog.html


1. 生成文件系统
./mkfs.jffs2 -p -l -e 0x20000 -n -v -r /data/rootfs2.6/ -o filesys.jffs2
==================================================================================
rootfs2.6下载地址:
http://focus.ti.com/general/docs/wtbu/wtbusplashcontent.tsp?templateId=6123&contentId=4750#osk
==================================================================================
五:烧写
一 UBOOT 的烧写:
1. 先要搭建tftp服务器
2. setenv ipaddr 192.168.0.2
3. setenv serverip 192.168.0.1
4. Setenv netmask 255.255.255.0
5. setenv ethaddr 00:0E:99:04:09:03
6. Saveenv
7. ifconfig eth0 192.168.0.1 up
(linux主机上,即在电脑上设置,如果是Windows的TFTP请到本地连接修改ip地址)
8. tftpboot 0x10000000 u-boot.bin
9. protect off 1:0 (取消保护0块保护,为了下面擦写0块)
10. erase 1:0
11. cp.b 0x10000000 0x0 xxxx (xxxx为刚才7。提到的文件大小(括号里的16进制) setenv bootargs console=ttyS0,115200n8 noinitrd root=/dev/mtdblock3 rootfstype=jffs2,nolock mem=32M

二内核的烧写:
1. tftpboot 0x10000000 uImage.cc 2. erase 1:2-17 或 erase 0x00040000 0x0023ffff
----------------------------------注意---------------------------------------------
此处1:2-17 擦除大小不能随便,18扇区开始是文件系统分区
-----------------------------------------------------------------------------------
2. cp.b 0x10000000 0x40000 xxxxx
-----------------------------------------------------------------------------------
从0x40000开始写内核,最大2M内核0x40000到0x240000两M内核空间。记得把u-boot的bootcmd改成 从0x40000开始。用命令: set bootcmd bootm 0x40000 你在u-boot中可以输入bootm 0x40000启动linux内核。
-----------------------------------------------------------------------------------


三 文件系统的烧写:
1. tftpboot 0x10000000 filesys.jffs2 (把filesys.jffs2拷贝到/tftpboot目录,开tftp服务)
2. erase 0x00240000 0x02000000 3. cp.b 0x10000000 0x240000 xxxx 4. bootm 0x40000
-------------------------------显示------------------------------------------------
U-Boot 1.1.1 (Aug 4 2005 - 10:41:25)
U-Boot code: 11080000 -> 11095DD4 BSS: -> 1109A5A4
RAM Configuration:
Bank #0: 10000000 32 MB
Micron StrataFlash MT28F128J3 device initialized
Flash: 32 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
## Booting image at 00040000 ... Image Name: Linux Kernel Image Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 1469437 Bytes = 1.4 MB Load Address: 10c08000 Entry Point: 10c08000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
................................



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45407/showart_356281.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP