zedboard 嵌入式linux系统移植
2015-04-03 09:21
435 查看
| |||
zedboard--嵌入式linux系统移植 | |||
作者:肖志远 文章来源:肖志远 点击数:1406 更新时间:2014-2-25 | |||
关于zedboard的系统开发(这里不考虑zedboard裸奔的情况了)可能会遇到下面的问题: 转载:请注明来之http://blog.csdn.net/xzyiverson <一>使用提供的Demo系统来进行应用程序和驱动程序的开发 应用程序开发: 需要安装交叉编译环境,另外要用到Opencv或者qt的话,在板子上要移植,这些都在前面的实验上已经做好了。 驱动程序开发: 这里主要是为自定义的ip核(PL)编写linux驱动的问题,包括两个问题,一是在pc下运行该驱动程序,一是在zedboard下运行该驱动程序。 pc机下驱动编写:这个虚拟机已经试过了,不需要搭建其他的环境。 zedboard下驱动编写:如运行在zedboard下的helloworld驱动。参见/article/1341651.html <二>构建自己的嵌入式Linux系统 以下需要的文件都可以在书中的光盘里面找到。 1.搭建系统环境(前面文章已经好了) /article/1347489.html 2编译u-boot 2.1下载和解压u-boot源码 2.2配置u-boot 进入源码目录,make zynq_zed_config 2.3编译u-boot 这里我就郁闷了,书上说要建立软链接,我没有建立也能成功,如果你需要建立的话,那么你就按书上的建立,不过书上写反了: 应该是:ln -s arm-xilinx-linux-gnueabi-gcc arm-linux-gcc ......... 编译:make 编译成功后可以看到生成了u-boot,我们执行mv ./u-boot ./u-boot.elf,这样就成功生成了u-boot。elf文件,这个文件就熟悉了,和前面的.bit和fsbl工程生成的fsbl.elf可以共同生成BOOT.BIN。 3编译内核和设备树 3.1下载解压内核源码 3.2配置内核源码 进入源码目录 make ARCH=arm digilent_zed_defconfig 3.3编译Linux内核 make ARCH=arm 编译成功后,在arch/arm/boot下生成了zImage文件 3.4编译设备树 zedboard的默认设备树源文件digilent-zed.dts(在内核源码目录的arch/arm/boot/dts下) 修改源文件:vim digilent-zed.dts 修改在16行的代码(书上有,不敲上去了) 然后我们进入内核目录下的scripts/dtc路径下的设备树的编译器,使用dtc工具,生成dtb文件。 ./dtc -I dts -O dtb -o ./devicetreee.dtb /opt/zedboard/kernel/linux..arch/arm/boot/dts/digilent-zed.dts 说明 ./devicetreee.dtb 生成的文件 /opt/zedboard/kernel/linux..arch/arm/boot/dts/digilent-zed.dts 为源文件 4制作根文件系统 4.1编译BusyBox 4.1.1下载和解压源码 4.1.2配置BusyBox(使用默认配置) make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig 修改安装目录:这里强烈推荐和后面的Dropbear安装到同一个目录下,我第一次没有安装到同一个目录下,有一点麻烦。 make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig 安装:make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install 安装完成后,在/opt/zedboard/devel/_rootfs/下可以看到: 4.2编译Dropbear 4.2.1下载和解压源码 4.2.2配置(注意“ CFLAGS”这里一定要有一个空格,血的教训。) 进入源码目录 ./configure --prefix=/opt/zedboard/devel/_rootfs --host=arm-xilinx-linux-gnueabi --disable-zlib CC=arm-xilinx-linux-gnueabi-gcc LDFLAGS="-Wl,--gc-sections" CFLAGS="-ffunction-sections -fdata-sections -Os" ./configure --prefix=/opt/zedboard/devel/_rootfs --host=arm-xilinx-linux-gnueabi --disable-zlib CC=arm-xilinx-linux-gnueabi-gcc LDFLAGS="-Wl,--gc-sections" CFLAGS="-ffunction-sections -fdata-sections -Os"4.2.3编译 make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"MULTI=1 strip 注意书上少了dropbearconvert 4.2.4安装 make install 4.2.5建立软连接 cd /opt/zedboard/devel/_rootfs/usr/bin/ ln -s ../../sbin/dropbear ./scp 4.3工具链动态库与应用的设置 4.3.1建立目录 cd /opt/zedboard/devel/_rootfs/ mkdir lib 4.3.2拷贝文件 将交叉编译环境库拷贝到这个目录下 cp /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/ arm-xilinx-linux-gnueabi/libc/lib/* lib -r 同样,将工具链拷贝到sbin/和usr/bin/下 cp /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/ arm-xilinx-linux-gnueabi/libc/sbin/* sbin/ -r cp/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/ arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r 4.4目录的创建与配置 首先:创建目录结构:在_rootfs目录下: mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www 然后进入etc目录,创建许多的配置文件 vim fstab LABEL=/ / tmpfs defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 none /tmp tmpfs defaults 0 0 LABEL=/ / tmpfs defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 none /tmp tmpfs defaults 0 0 vim inittab ::sysinit:/etc/init.d/rcS # /bin/ash # # Start an askfirst shell on the serial ports ttyPS0::respawn:-/bin/ash # What to do when restarting the init process ::restart:/sbin/init # What to do before rebooting ::shutdown:/bin/umount -a -r ::sysinit:/etc/init.d/rcS # /bin/ash # # Start an askfirst shell on the serial ports ttyPS0::respawn:-/bin/ash # What to do when restarting the init process ::restart:/sbin/init # What to do before rebooting ::shutdown:/bin/umount -a -r vim passwd root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh vim init.d/rcS #!/bin/sh echo "Starting rcS..." echo "++ Mounting filesystem" mount -t proc none /proc mount -t sysfs none /sys mount -t tmpfs none /tmp echo "++ Setting up mdev" echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s mkdir -p /dev/pts mkdir -p /dev/i2c mount -t devpts devpts /dev/pts echo "++ Starting telnet daemon" telnetd -l /bin/sh echo "++ Starting http daemon" httpd -h /var/www echo "++ Starting ftp daemon" tcpsvd 0:21 ftpd ftpd -w /& echo "++ Starting dropbear (ssh) daemon" dropbear echo "rcS Complete" #!/bin/sh echo "Starting rcS..." echo "++ Mounting filesystem" mount -t proc none /proc mount -t sysfs none /sys mount -t tmpfs none /tmp echo "++ Setting up mdev" echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s mkdir -p /dev/pts mkdir -p /dev/i2c mount -t devpts devpts /dev/pts echo "++ Starting telnet daemon" telnetd -l /bin/sh echo "++ Starting http daemon" httpd -h /var/www echo "++ Starting ftp daemon" tcpsvd 0:21 ftpd ftpd -w /& echo "++ Starting dropbear (ssh) daemon" dropbear echo "rcS Complete" 设置用户权限:chmod 755 etc/init.d/rcS chown root:root etc/init.d/rcS 4.5制作ramdisk镜像文件 制作镜像文件 cd ~ dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192 mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0 tune2fs ramdisk8M.image -i 0 chmod 777 ramdisk8M.image cd ~ dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192 mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0 tune2fs ramdisk8M.image -i 0 chmod 777 ramdisk8M.image 挂载,将_rootfs的所有内容复制到该镜像中 mkdir ramdisk mount -o loop ramdisk8M.image ramdisk/ cp -R /home/devel/_rootfs/* ramdisk umount ramdisk/ gzip -9 ramdisk8M.image mkdir ramdisk mount -o loop ramdisk8M.image ramdisk/ cp -R /home/devel/_rootfs/* ramdisk umount ramdisk/ gzip -9 ramdisk8M.image 最后一步;将zImage,BOOT.BIN(暂时用别的先替一下,因为这次我们生成的是elf文件),devicetree.dtb必须改名为devicetree_ramdisk.dtb,ramdisk8M.image.gz拷贝到sd卡中,可以看到启动信息:和之前的系统有一些差别。 |
相关文章推荐
- zedboard--嵌入式linux系统移植
- zedboard--嵌入式linux系统移植
- zedboard-嵌入式Linux系统移植
- 基于s5pv210嵌入式linux系统sqlite3数据库移植
- 基于s5pv210嵌入式linux系统sqlite3数据库移植
- 嵌入式Linux之我行——内核、文件系统、应用移植开发篇
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】全面解析PowerPC架构下的扁平设备树FDT
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】Guidelines for Porting PPCBOOT on PowerPC
- 在嵌入式Linux系统(OK6410)中移植Boa 服务器
- U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
- 基于嵌入式Linux 系统的MiniGUI 的移植与应用
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之三--U-BOOT在AT91RM9200上的移植
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之三--U-BOOT在AT91RM9200上的移植
- 基于ARM9的嵌入式Linux系统移植
- 基于ARM11的嵌入式linux系统移植与实现--(笔记一)
- Linux嵌入式移植之——(2)文件系统制作, initramfs
- 嵌入式Linux系统中的GUI系统的研究与移植
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之一--BOOTLOADER介绍
- 在XP下做linux嵌入式系统移植 AT91SAM9260
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之二--U-boot基础