需要的所有文件 --------------------- 链接: /s/1hMTAppeF_DdCsnVEEJEDPw 密码: vel1
首先要在开发板上搭建一个Linux系统,需要完成以下几个步骤
1.BootLoader-----打补丁、编译 u-boot---执行以下步骤----最终目的:启动内核
$ tar xjf u-boot-1.1.6.tar.bz2 //解压 u-boot-1.1.6.tar.bz2 压缩包$ cd u-boot-1.1.6 //进入 u-boot-1.1.6 目录$ patch -p1 < ../u-boot-1.1.6_jz2440.patch //对 u-boot-1.1.6 打 patch 补丁$ make 100ask24x0_config //配置$ make //编译 u-boot.bin
然后将文件通过oflash将最终生成的u-boot.bin下载到开发板的NORFLASH(具体步骤参考ttps:///m0_37844072/article/details/113729680的第二点)。然后在开发板上插入USB线,然后掉电重启开发板,在串口看到打印信息代表U-boot烧录成功。。。
u-boot从Flash读出内核放到SDRAM,然后即可启动内核。。(所以u-boot需要包含实现的功能:读写Flash,初始化SDRAM(初始化时钟,初始化串口),启动内核。。)
但是编译报错:解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
然后百度了一下:解决办法如下.... sudo apt-get install lib32z1 lib32z1-dev
2.打补丁、编译内核---为了启动根文件上的应用程序
$ tar xjf linux-2.6.22.6.tar.bz2 //解压 linux-2.6.22.6.tar.bz2
修改Linux-2.6.22.6的交叉编译工具链---(安装交叉编译工具链可看第三项为安装教程注意:PATH为PATH=/home/zion/linux/gcc_jz2440/arm-linux-gcc-3.4.5-glibc-2.3.6/bin:$PATH)---然后根据自己的交叉编译工具链的位置做如下修改。。。并且ARCH改为arm修改内核文件的Makefile
$ cd linux-2.6.22.6 //进入 linux-2.6.22.6 目录$ patch -p1 < linux-2.6.22.6_jz2440.patch //将linux-2.6.22.6_jz2440.patch拷贝到linux-2.6.22.6目录下,,给 linux-2.6.22.6 打 patch 补丁$ cp config_ok .config //拷贝开发板配置文件$ make uImage //编译内核生成 uImage 镜像
Linux3.4.2编译 问题语句:Install ncurses(ncurses-devel) and try again。
打开一个终端输入下面这条语句按回车进行安装即可。
apt-get install libncurses5-dev
Linux3.4.2编译 问题语句:Can't use 'defined(@array)' (Maybe you should just omit the defined()?)at kernel/timeconst.pl line 287.
解决方法:今天编译内核遇到的问题,根据error出错目录,找到timeconst.pl文件,进入找到defined(@array)这句,根据括号内提示,忽略defined,将:
if (!defined(@val)) {
改为:
if (!(@val)) {
Linux3.4.2编译 问题语句:mkimage command not found – U-Boot images will not be built
解决办法:sudo apt-get update sudo apt-get install u-boot-tools
编译成功后,在内核 arch/arm/boot 目录即生成 uImage。。
此时需要连接开发板上的USB口到电脑上,然后重启板子可在串口上看到打印的信息,按下空格,根据提示选择K,下载Linux Kernel Image文件。。
然后通过dnw下载生成好的uImage到开发板 。。下载成功即代表把Linux内核加载到开发板上了。。。。。
3.Busybox制作部分根文件系统
1.解压并进入busybox-1.7.0文件夹
2.在/busybox-1.7.0目录下make menuconfig
报错:Makefile:405: *** mixed implicit and normal rules: deprecated syntax
Makefile:1242: *** mixed implicit and normal rules: deprecated syntax
make: *** No rule to make target 'menuconfig'. Stop.
解决:由于make的版本过高,需要修改Makefile,如下操作。。。
1在makefile中将405行代码config %config: scripts_basic outputmakefile FORCE改为%config: scripts_basic outputmakefile FORCE2在makefile中将1242行代码/ %/: prepare scripts FORCE改为%/: prepare scripts FORCE
2.在Makefile配置交叉编译工具链:如下图所示
3.安装到busybox文件下
4.将根文件系统制作成yaffs2映像文件
zion@lbw:~/gcc_jz2440/busybox-1.7.0/first_file_systeam$ mkdir devzion@lbw:~/gcc_jz2440/busybox-1.7.0/first_file_systeam$ cd dev/zion@lbw:~/gcc_jz2440/busybox-1.7.0/first_file_systeam/dev$ sudo mknod console c 5 1zion@lbw:~/gcc_jz2440/busybox-1.7.0/first_file_systeam/dev$ sudo mknod null c 1 3zion@lbw:~/gcc_jz2440/busybox-1.7.0/first_file_systeam/dev$ ls -ltotal 0crw-r--r-- 1 root root 5, 1 Feb 24 21:10 consolecrw-r--r-- 1 root root 1, 3 Feb 24 21:11 null
拷贝交叉编译工具链的lib文件夹下的.so文件到busybox的文件系统的lib目录下
zion@lbw:~/gcc_jz2440$ cd arm-linux-gcc-3.4.5-glibc-2.3.6/arm-linux/libzion@lbw:~/gcc_jz2440/arm-linux-gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp *.so* ~/gcc_jz2440/busybox-1.7.0/first_file_systeam/lib -d
将根文件系统制作成yaffs2映像
zion@lbw:~/gcc_jz2440/Download/JZ2440V3/systems/Development_util_ok$ cd yaffs2/utils/zion@lbw:~/gcc_jz2440/Download/JZ2440V3/systems/Development_util_ok/yaffs2/utils$ makezion@lbw:~/gcc_jz2440/Download/JZ2440V3/systems/Development_util_ok/yaffs2/utils$ sudo cp mkyaffs2image /usr/local/bin/zion@lbw:~/gcc_jz2440/Download/JZ2440V3/systems/Development_util_ok/yaffs2/utils$ sudo chmod +X /usr/local/bin/mkyaffs2image zion@lbw:~/gcc_jz2440/busybox-1.7.0$ mkyaffs2image first_file_systeam first_file_systeam.yaffs2 //在first_file_systeam文件下生成first_file_systeam.yaffs2文件
烧录文件系统
至此,我们可在开发板上输入命令。。。。 u-boot + linux内核 +根文件系统 至此在开发板上搭建完成。。。