嵌入式产品

本文详细介绍了嵌入式产品开发流程,包括硬件设计、BootLoader移植、Kernel移植、应用程序开发、功能测试等关键步骤。同时,阐述了交叉工具链的使用方法,以及内核制作、根文件系统、ramdisk制作等核心技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主机和目标机是基于不同体系架构的开发,宿主机开发、编译,目标机运行进行嵌入式开发之前,首先需要安装交叉工具链,网络协议栈以及驱动程序开发。协议栈分为新协议的开发和基于已有协议设计新的处理例程;驱动包括字符设备驱动、块设备驱动、网络设备驱动。

  一,【嵌入式产品开发流程】 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:网络文件系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值