基于ARM的嵌入式教学实验装置的设计与实现

2022-09-13

随着嵌入式技术的发展, “嵌入式无处不在”已经成为现实, 现在很多高科技型产品都使用嵌入式技术, 嵌入式技术在通信、网络、电子、工控、医疗等领域都发挥了巨大的作用。ARM9系列嵌入式微处理器, 因为主频高、低功耗, 具有很高的性价比, 广泛应用于高端嵌入式产品中。基于此, 设计了ARM嵌入式教学实验平台, 这对于计算机专业学生学习嵌入式技术和教师进行嵌入式教学研究有重要的意义。

1 实验项目设计

设计的平台提供串口、USB接口、带电气隔离的CAN-bus接口、I2S音频接口、以太网接口等, 满足各种应用要求, 让学生全面深入学习μC/OS-II、WinCE和Linux操作系统, 同时根据装置所提供的大量源代码及详细的教学文档, 能加快学习进度。具体的实验项目包括μC/OS-II、WinCE和Linux嵌入式实时操作系统的移植, Linux开发环境建立及内核编译运行实验, Linux文件系统实验, Linux内核驱动程序开发实验, uC/OS-II任务管理和任务间通讯实验, Nand Flash读写实验, 行列扫描方式的矩阵键盘实验, L C D控制器实验, D M A读写实验, ADC实验;I2C串行EEPROM读写实验, I2S相关实验, LED跑马灯实验, 定时器中断实验, IDE硬盘读写实验, UART异步串行口通讯实验, W A T C H D O G实验, C A N总线通讯实验, 录音和放音实验, 以太网 ( (UDP、TCP/IP和WebServer) ) 相关实验, USB DEVICE通讯实验, LCD显示实验, USB图像采集传输实验等。

2 装置硬件设计

系统的硬件平台主要是由嵌入式处理器、USB摄像头模块、存储器、以太网接口、LCD接口、串行接口电路等组成。系统硬件结构框图如图1所示。

(1) CPU:Samsung的S3C2440A-40处理器, 其是一款由Samsung半导体公司为手持设备和各种多用途应用设计的, 低功耗、高集成度的微处理器, 采用289脚FBGA封装, 包含ARM920T内核, 工作频率达406MHz。

(2) 存储器设计。Nand Flash存储器:采用1片Nandflash同时作为启动ROM和系统程序保存R O M。S D R A M:用于设置程序堆栈和存放各种数据变量等。

(3) 以太网接口设计。10Mbps低功耗嵌入式专用以太网网络芯片CS8900A-CQ3, 接口为标准RJ45插座, 集成网络变压器, 安全可靠

(4) U S B接口。采用C y p r e s s公司的SL811HS芯片作为USB接口芯片, 它是一种USB主机控制器, 它能与全速或低速USB外围设备通信, SL811HS采用3.3V供电, 其端口驱动能力但是可以兼容5V的电平逻辑。

(5) 串口R S 2 3 2是应用最为广泛的UART接口, RS232接口采用的是最简单的三线连接 (TXD, RXD, GND) , 通讯波特率为9600b/s。

(6) 音频接口:采用IIS接口芯片UDA1341。

(7) 摄像头:采用OmniVision公司的O V 5 1 1。

(8) LCD接口:本文选用LTS350Q1-PD1LCD显示屏, 为3.5寸的TFT, 分辨率为320×240, 16位色彩。

3 装置软件设计

本实验装置的嵌入式操作系统有μC/OS-II、WinCE和Linux操作系统, 综合考虑后, 本文选用嵌入式Linux系统, 本文主要介绍嵌入式Linux操作系统的移植, 摄像头模块软件和LCD显示模块软件。

3.1 嵌入式Linux操作系统的移植

3.1.1 嵌入式Linux交叉环境建立

交叉编译环境是一个由编译器、链接器和解释器组成的综合开发环境, 交叉编译工具主要由binutils、gcc和glibe几个部分组成。建立针对ARM的交叉编译环境主要过程如下:

(1) 下载源文件、补丁和建立编译的目录; (2) 建立内核头文件; (3) 建立二进制工具; (4) 建立初始编译器; (5) 建立链接库; (6) 建立全套编译器。

3.1.2 嵌入式Linux内核移植

在Linux系统内核代码中有arch目录, 其中包括了不同平台的代码, 与体系结构相

关的代码都存放在arch下面相应的目录下面。本系统采用arm开发平台, 所以依赖ARM硬件平台的代码都在arch/arm下面。根目录下面只需要修改Makefile文件, 该文件主要任务是产生vmlinux文件和内核模块。

配置命令可以选用make config, make oldconfig, make menuconfig或make xconfig

其中一个。

编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行make dep命令, 读取配置过程生成的配置文件, 来创建对应于配置的依赖关系树;接着执行make clean命令删除前面步骤留下的文件, 以避免出现一些错误;然后便可以生成所需要的内核文件了, 用m a k e zlmage来实现得到可移植的内核, 内核文件传至开发板便可以通过BootLoader加载运行。

3.2 摄像头模块软件

3.2.1 OV511摄像头驱动程序加载

采用Linux系统采用模块化的设计, 在进行OV511摄像头的驱动研究时, 必须要在嵌入式Linux内核中加载Video4Linux模块和OV511设备的支持。本系统采用动态加载方式, 加载过程如下:

(1) 在嵌入式Linux的内核源码目录中, 执行命令make menuconfig;

(2) 选择Multimedia device-->下的video for linux, 加载video4linux模块。

(4) 保存刚才的配置, 退出;

(5) 执行“make dep”, “make zImage”, “make modules”, 然后就在/driver/usb目录下生成ov511.o, 同时生成的zImage自动放在/tftpboot目录下;

(6) 执行“insmod ov511.o”, 把USB摄像头的驱动加载进系统。

3.2.2 视频采集软件

在Linux内核中, 提供了视频类部分的标准是V4L, 这个标准可用于USB摄像头编程。

(1) 初始化视频设备。

在Linux系统中, 摄像头被当作一种特殊的文件, 即设备文件来处理, 在本文中是/dev/v4l/video0, 让摄像头工作首先要做的是调用系统函数open打开设备;打开设备以后, 还要获得视频图片的属性, 这里调用I/O通道控制函数ioctl () 来实现;

(2) 设定norm信息。

norm参数的定义在videodev.h头文件中有定义, 分别是:VIDEO_MODE_PAL、VIDEO_MODE_NTSC、VIDEO_MODE_SECAM、VIDEO_MODE_AUTO。

(3) 设定mmap信息。

视频采集有两种方式:内存映射和直接从设备文件读取。这里采用mmap方式。首先, 调用系统函数ioctl () 获得内存映射的buffer信息;然后用vd->map指针指向这部分内存;

(4) 采集视频帧。

主要通过三个函数来实现获取视频帧信息, 分别是:

device_next_frame () ;//等待直到获取下一幅

device_grab_sync () ;//得到一幅图片

image=device_get_address () ;//获得图片的指针

(5) 输出视频数据。

当利用device_get_address () 函数获得frame的存放位置以后, 就可以输出视频数据了。视频数据可以直接输出到framebuffer, 或者可以利用LCD显示, 本文是把数据写进文件。

3.3 LCD驱动程序开发

3.3.1 编写初始化函数

初始化的功能主要有初始化LCD控制器, 写相关寄存器设置显示模式和颜色数, 为LCD分配显示缓冲区, 用kmalloc () 函数分配一段连续的空间, 缓冲区分配在SDRAM中。

3.3.2 编写各成员函数

对显示设备/dev/fb主要有读/写操作、映射 (map) 操作和I/O控制操作。

(1) 读/写 (read/write) /dev/fb操作:相当于读/写屏幕缓冲区。

(2) 映射操作:在Linux中工作与保护模式, 每个应用程序都有自己的虚拟地址空间, 应用程序不能直接访问物理地址, 而是由file_operations结构中提供了mmap函数, 将文件的内容映射到用户空间。

(3) I/O控制:对于帧缓冲设备, 通过对文件ioctl的操作读取和设置显示设备的分辨率、显示颜色数和屏幕大小等屏幕参数。Ioctl的操作也是有底层的驱动程序来完成。

4 结语

本装置采用全部免跳线设计, 免去烦琐而且容易出错的硬件跳接, 简单易用, 不会出现硬件调试设定的故障, 降低了学生的使用难度, 非常方便学生实验使用, 同时, 提供丰富的外围模块和上机实验指导, 可以满足大部高分职嵌入式A R M教学实验的要求。

摘要:本文提出了一种基于ARM的嵌入式教学实验装置的设计方案。系统中以ARMLinux为操作系统平台, S3C2440A为处理器核心, 构建了嵌入式教学实验装置的软硬件平台, 文中简要介绍了其硬件结构, 详细阐述了软件系统的设计。

关键词:嵌入式系统,实验装置,ARM

参考文献

[1] 宋宝华.Linux设备驱动开发详解[M].人民邮电出版社, 2008, 2.

[2] 周立功.ARM嵌入式系统基础教程[M].北京航空航天大学出版社, 2008, 9.

[3] 杨水清, 等.ARM嵌入式Linux系统开发技术详解[M].电子工业出版社, 2008, 11.

上一篇:民族地区红色文化资源建设与保护研究下一篇:高校思政课实践教学主体性的生发策略探析