词条 | 嵌入式产品 |
释义 | 主机和目标机是基于不同体系架构的开发,宿主机开发、编译,目标机运行进行嵌入式开发之前,首先需要安装交叉工具链,网络协议栈以及驱动程序开发。协议栈分为新协议的开发和基于已有协议设计新的处理例程;驱动包括字符设备驱动、块设备驱动、网络设备驱动。 一,【嵌入式产品开发流程】 1. 硬件设计,网卡、USB控制器等 2. BootLoader移植 3. Kernel移植。内核移植又名最小系统移植,移植后的内核具备网络通、串口通、根文件系统可用等基 本条件。 4. 5. 应用程序的开发。C函数库(Uclibc/Glibc)、QT图形化应用程序开发、网络应用程序开发 6. 功能测试、性能测试、系统集成测试、实验局、新产品发布 二,【交叉工具链】 宿步骤如下: 1. #tar zxvf arm-linux-gcc-4.3.2.tar.gz -C / 2. (1)一次性:执行export在PATH环境变量中添加路径 #export PATH=$PATH:/usr/local/arm/4.3.2/bin (2)永久性:修改/etc/profile,添加 pathmunge /usr/local/arm/4.3.2/bin 编译器: #arm-linux-gcc hello.c -o hello 反汇编工具:#arm-linux-objdump -D -S hello >log #arm-linux-gcc -g hello.c -o hello #arm-linux-objdump -D -S hello >log 这两句执行后将在log文件生成汇编、C逐句对照信息 ELF文件查看工具:#arm-linux-readelf -a hello 可查看文件运行架构、大小端等信息。 #arm-linux-readelf -a hello 可产看文件所用到的动态共享链接库,一般编译时加上"-static"选项 三,【内核制作】 嵌入式Linux系统由Linux内核与根文件系统两部分构成,二者缺一不可。内核制作步骤如下: 1. 清除原有配置与中间文件 #make distclean 2. 配置内核 X86:#make menuconfig arm:#make menuconfig ARCH=arm 参考配置在arch/arm/configs目录下,注意配置NFS与ramdisk文件系统的区别 3. 编译内核 X86:#make bzImage arm:#make uImage ARCH=arm CROSS_COMPILE=arm-linux- 首先得将u-boot/tools/目录中的mkimage cp至/bin目录下 四,【根文件系统】 根文件系统是Linux启动使用的第一个文件系统,由一系列目录组成,包括应用程序、C库以及相关配置文 件 1. 创建根文件系统的目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/sbin usr/lib lib/modules 2. 创建设备文件 #cd dev/ #mknod -m 666 console c 5 1 #mknod -m 666 null c 1 3 #cd .. 3. 安装/etc #tar zxvf etc.tar.gz -C /XXX/rootfs 4. 编译内核模块 进入内核根目录执行命令: #make modules ARCH=arm CROSS_COMPILE=arm-linux- 5. 安装内核模块 #make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs 实质是将编译好的内核模块从内核代码中cp至/XXX/rootfs/lib/modules路径下 6. 配置Busybox 进入busybox目录执行 #make menuconfig (1)进入Busybox Settings->Build Options-> 选中“Build Busybox as a static binary”,静态链接 Cross Compiler Prefix (arm-linux-) (2)进入Busybox Settings->Installation Options-> 选中“Don't use /usr”避免busybox被安装到宿主机/usr目录下,破坏宿主机系统 Busybox Installation Prefix (/XXX/rootfs) 指明编译后Busybox的安装位置 7. 编译、安装busybox #make ARCH=arm CROSS_COMPILE=arm-linux- #make install 五,【ramdisk制作】 #genext2fs -b 8192 -d /XXX/rootfs ramdisk #gzip -9 -f ramdisk 六,【文件系统】 常见的文件系统类型有:Jffs2,Yaffs,Cramfs,Ramdisk,NFS等,配置内核时选择文件系统类型。 Jffs2: 用于NorFlash,可读写,可压缩 Yaffs: 用于NandFlash,速度快,不支持数据压缩 Cramfs:用于NandFlash和NorFlash,只读的压缩文件系统 Ramdisk:实质并非文件系统,是将实际文件系统(如:ext2)装入内存的机制 NFS:网络文件系统 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。