3 软件平台的构建和应用程序的开发
3.1 构建软件平台
系统的引导过程包括以下步骤:
( 1) 处理器重新启动以后, 执行ROM启动代码。
( 2)ROM启动代码初始化CPU、内存控制器以及片上设备,然后配置存储映射。随后执行bootloader.
( 3) bootloader 将内核从闪存解压到RAM中, 然后跳到内核的第一条指令处执行。
( 4) 内核初始化各种硬件设备, 挂载根文件系统, 然后执行init 进程。
( 5) Init 进程装载运行时共享库, 读取配置文件/etc/inittab,执行脚本/etc/rc.d/rcS.
构建嵌入式软件平台需要准备以下工作: 制作内核、创建根文件系统和生成启动代码bootloader.
3.1.1 制作Linux 内核
采用Linux2.6.12 的内核。在Linux2.6 中, 引入了很多非常有利于嵌入式应用的功能。这些新功能包括实时性能的增强、更方便的移植性、对大容量内存的支持、支持微控制器和I/O系统的改进等。2.6.12 提供了针对S3C2410 的配置, 使用命令make s3c2410_defconfig, 然后配置内核使用命令make menuconfig,配置体系结构( System Type) , 选择S3C2410 Implementation,配置处理器类型, 选择ARM9T, 接着配置通用选项, 支持网络、SYSVIPC 机制、支持ELF 文件格式, 选择根文件系统为JFFS2, 然后再配置网络, 选择网络设备支持, 选择串口支持、选择文件系统与网络文件系统, 配置USB 设备选项, 由于数码相机是USB 设备, 我们使用libusb0.1.10 版本的驱动支持, 所以需要修改内核源码usb.c 文件, 不把数码相机作为USB 存储设备。编译内核映像使用命令make zImage, 建立模块使用命令make modules.
3.1.2 创建根文件系统
根文件系统是所有Unix 系统不可或缺的组件, 顶层目录/bin、/dev、/etc、/lib、/proc、/sbin 和/usr 是必须的。有几项工作非常重要, 首先是建立安装GNU C 链接库, glibc 套件包括若干链接库, 比如数学链接库libm- 2.2.3.so, 共享c 链接库libc- 2.2.3.so.
除了链接库文件, 还要复制动态链接库及其符号连接。再就是建立设备文件, 按照Unix 的传统, 任何对象都可视为文件, 所有设备节点都放在/dev 目录下, 包括zero、random、tty0、tty1、ttyS0、tty、console、mem、null, 另外还需要建立必要的符号连接:
fd- >/proc/self/fd, stdin- >fd/0, stdout- >fd/1, stderr- >fd/2.然后选择主要的系统命令, BusyBox 无疑是最方便的套件, 成功安装后, /bin 目录下会出现二进制文件busybox, 对需要的命令建立对BusyBox 的符号连接。
为根文件系统选择文件系统是很重要的工作。JFFS2 文件系统的特点是可被写入、具有永久性、断电可靠性而且可以压缩。JFFS2 会为垃圾回收功能维护空间, 提供断电可靠性和损耗平衡这两个对flash 系统非常重要的特性。由于抓拍系统工作在开放式的环境中, 稳定性、可靠性是首先要考虑的, 所以选择JFFS2.用mkfs.jffs2 工具程序建立文件系统的映像: mkfs.
jffs2- r rootfs/- o images/rootfs- jffs2.image.
3.1.3 Bootloader 代码。
Bootloader 主要负责加载内核, 尽管它在系统启动期间执行的时间很短, 但是非常重要的系统组件, 对嵌入式系统来说是一件特别的工作。Bootloader 是严重依赖于硬件而实现的, 目前以ARM为基础的系统还没有标准的Bootloader, 针对本系统的硬件特性, 在ppcboot 的基础上加以修改, 生成适合本系统的启动代码。
3.2 应用程序的开发
程序主要实现以下功能: 现场红灯和线圈信号的采集; 控制相机拍照、保存参数、传输照片和删除照片; 处理按键信息并送数码管显示; 通过以太网远程下载照片, 也可以用U 盘本地下载照片。应用程序的总体结构如图7 所示。
系统软件的设计主要是控制相机的USB 通讯模块的编写、网络传输模块的编写、信号采集模块的编写和串口通讯模块的编写。其中USB 通讯模块是关键, 需要严格遵守数码相机的通讯协议; 网络传输采用客户机服务器方式, 本机作为客户机, 工控中心设置为服务器。检测信号模块主要是读取并口信息, 并口的操作使用端口I/O, 简单、操作性强, 并且可以清楚说明编写设备驱动程序开发所必需的底层硬件控制过程。在Linux 中有一个用于输入的命令inb( address) 和一个用于输出的命令outb( value, address) .C 语言的宏扩展实现了这两个函数, 而且不涉及任何函数库, 但使用这两个函数需要一些额外的函数, 函数ioperm( ) 从内核中申请和释放端口访问权。在Linux 下, 串口一般作为一个终端接口, 即tty 接口, POSIX.1 定义了一个查询和操作终端的标准接口, 该接口被称作termios,在系
消除影响JESD204B链路传输的因素 JESD204B串行数据链路接口针对支持更高速转换器不断增长的带宽需求而开发。作为第三代标准,它提供更高的通道速率最大值(每通道高达12.5 Gbps),支持确定延迟和谐波帧时钟。此外,得益于转换器
赛普拉斯汽车LED驱动器助力实现业内最紧凑的前 LED 正被越来越多地应用于汽车前照明系统,从而将 2020 年的 LED 驱动器预测需求推升至 1.2 亿件。LED 凭借其在功耗、成本和尺寸上的优势,成为头灯、日间行车灯、示宽灯、雾
DC-DC电路原图求助本帖最后由linfeng1985于2016-5-1111:31编辑
此电路原理图不知道其原理是什么,怎么启动和运行的,请教懂得大神指教一下,ps:此模块应用于单火取电
我也看不懂,
王七七发表于2016-