1、用于实现对其他设备的控制,监视或管理等功能。嵌入式系统已经广泛应用于科学研究,工业控制,军事技术,交通通信,医疗卫生,消费娱乐等领域,人们常用的手机,PDA,汽车,智能家电,GPS等均是嵌入式系统的典型代表。本课程设计要求利用实验室提供的ARM2410实验箱进行相应的设计,主要包括理解LED原理,掌握在LINUX下常用编辑器的使用,掌握MAKEFILE的编写和使用,掌握LINUX下的程序编译与交叉编译过程,有一定的数字电路的知识,能够设计出新颖的显示图样,最后通过上下位机实现结果的显示一实验平台1.1嵌入式系统简介嵌入式系统是基于单片机的一种升级版,它是以应用为中心、以计算机技术为基础、软件硬
2、件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。我们可从几方面来理解嵌入式系统:1、嵌入式系统是面向用户、面向产品、面向应用的,嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。3、嵌入式系统必须根据应用需求对软硬件进行裁剪,满足
3、应用系统的功能、可靠性、成本、体积等要求。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。4、嵌入式系统本身不具备自主开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。实际上,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统。现在人们讲嵌入式系统时,某种程度上指近些年比较热的具有操作系统的嵌入式系统。1.2认识博创经典实验箱博创经典UP-TECH-S2410/P270-DVP实验箱是由北京博创兴业科技有限公司推出的一款嵌入式实验箱。它的核心模块为S2410或
4、P270,当它安装S2410核心模块时为S2410实验箱,安装P270核心模块时为P270实验箱。1.3建立开发环境 1在下位机断电的情况下,利用实验箱中自带的串口线将上位机的com1口与下位机的RS232-0口进行连接。2利用实验箱中自带的直连网线将上位机与下位机进行连接。3根据下位机中安装的核心模块,选择相应的嵌入式系统开发软件光盘。4将选择好的嵌入式系统开发软件光盘放入上位机的光驱中,在终端命令窗口中挂载该光盘。mount o iocharset=gb2312 /dev/cdrom /mnt5进入光盘的Linux工具软件目录。执行该目录下的shell文件“install.sh”,Linu
5、x工具软件会自动安装完成。对于S2410,会将程序安装在目录“arm2410cl”下,交叉编译器安装在目录“/opt/host”下。用户可以通过使用命令“armv41-unknown-linux-gcc”运行交叉编译器。6启动minicom超级终端程序,选择“Serial port setup”进入串口配置界面进行串口配置。然后可以打开下位机的电源,通过minicom对下位机进行操作。7使用命令ifconfig分别查看上位机和下位机的IP地址,判断上位机与下位机是否处于同一个网段。若它们不在同一网段,使用命令ifconfig或者KDE桌面的工具,将它们配置在同一网段。使用命令ping查看上位机
6、与下位机的网络连接是否正常,如不正常,请检查网线的连接、IP地址的配置、IP地址是否冲突等。8将上位机配置为NFS服务器,设置共享目录为“/arm2410cl”。9在上位机中启动NFS服务,下位机使用命令mount挂载上位机的共享目录。mount t nfs 192.168.0.252:arm2410cl /mnt/nfs1.4给下位机烧写软件系统下位机的软件系统由Bootloader、系统内核、根文件系统和应用程序四部分组成。Bootloader相当于PC机上的BIOS,在下位机加电时自动运行,执行硬件初始化和调用系统内核的功能。Bootloader分为U-boot、Vivi、Blob、AR
7、MBoot、 RedBoot等多种,本实验使用实验箱自带光盘中的vivi。系统内核就是运行在下位机上的操作系统内核,本实验使用实验箱自带光盘中的zImage,是ARM-Linux的内核,版本号为2.6。根文件系统是Linux系统必不可少的一部分,用来管理下位机中的文件。本实验使用实验箱自带光盘中的root.cramfs。Cramfs是专门针对Flash设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3,经常作为下位机的根文件系统。应用程序是需要烧写到下位机,在下位机中运行的程序,在上位机中以压缩文件包的形式保存,本实验使用实验箱自带光盘中的y
8、affs.tar.bz2。应用程序所的文件系统为Yaffs(Yet Another Flash File System),Yaffs是一种专门为Flash设计的嵌入式文件系统,运行速度快、占用内存小,提供写均衡、垃圾收集等底层功能。给下位机烧写软件系统的步骤:1烧写Vivi到下位机;2在上位机的Windows XP中配置超级终端,连接下位机;3烧写系统内核到下位机;4烧写根文件系统到下位机;5烧写应用程序到下位机。二.基本原理2.1 LED显示控制原理LED是发光二极管英文Light Emitting Diode的缩写格式,LED器件种类繁多,早期的LED产品是单个发光管,随着数字化设备的出现
9、,LED数码管和字符管得到了广泛的应用,LED点阵等显示器件的出现,适应了信息化社会发展的需要,成为了大众传媒的重要工具。 LED发光灯按类型可以分为单色发光灯、双色发光灯、三色发光灯、面发光灯、闪烁发光灯、电压型发光灯等;按发光强度可分为普通亮度发光灯、高亮度发光灯、超高亮度发光灯等。2.1.1 7段(或8段)LEDLED的7个字段分别称为a、b、c、d、e、f、g,有时还有一个小数点段h,图1(a)所示。通过7个(或8个)发光段的不同组合,显示09和AF共16个字母数字,从而实现十六进制的显示。 为使7段显示器显示数字或字符,就需点亮相应的段,每个段分别由数据线进行控制,通常数据线D0D7
10、顺序控制ah段,如图11-34(b)所示,所需的控制信号称为段码。 由于数字与段码之间没有规律性,因此必须进行数字与段码之间的转换以便显示数字。常用的转换方法是将要显示字形的段码列成一个表,称为段码表。显示时,根据字符查段码表,取出其对应的段码送到数据线上来控制显示。图1 8段LED 显示器外形及各段对应的数据线LED有两种不同的形式: 一种是8个发光二极管的阳极都连在一起,称为共阳极,如图2(a)所示;另一种是8个发光二极管的阴极都连在一起,称为共阴极,如图2(b)所示。图2 8段LED 显示器原理图 2.1.2点阵式LED点阵式LED的显示单元一般由8行8列LED组成,其外形及内部连接如图
11、3所示,可以再由这8行8列的LED拼成更大的LED阵列。点阵式LED显示器能显示各种字符、汉字及图形、图像,并具有色彩。 点阵式LED中,每个LED表示一个像素,通过每个LED的亮与灭来构造出所需的图形,各种字符及汉字也是通过图形方式来显示的。对于单色点阵式LED,每个像素需要1位二进制数表示,1表示亮,0表示灭。对于彩色点阵式LED,则每个像素需要更多的二进制位表示,通常需要一个字节。点阵式LED显示器的显示控制采用扫描方式,在数据存储器中开辟若干个存储单元作为显示缓冲区,缓冲区中存有所需显示图形的控制信息。显示时依次通过列信号驱动器输出一行所需所有列的信号,然后再驱动对应的行信号,控制该行
12、显示。只要扫描速度适当,显示的图形就不会出现闪烁。图3 点阵式LED的外形和内部连接2.2 74HC273在开发板上的连接2.2.1 7段(或8段)LED的连接开发板上设置了2个数码管,由74HC273控制,如图4所示。74HC273是同步串行转并行的锁存器,在此通过SPI总线和CPU连接,锁存数据后驱动数码管发光。图4 开发板上7段LED的连接2.2.2点阵式LED的连接点阵式LED在开发板上的连接如图5所示。点阵式LED 驱动器逻辑中设置了8 个字节的缓冲区,每个字节按位对应点阵式LED 模块上的一列8个点。驱动器中的扫描电路会将缓冲区的内容不断输出到LED模块,CPU 可以读写此缓冲区,
13、从而可以更新现实内容。图5 开发板上点阵式LED的连接点阵LED寄存器组共8个字节寄存器,地址A4A3A2A1=从0000 到0111,按地址递增顺序分别对应点阵LED模块从左到右的8个列。每个字节寄存器对应一列,字节寄存器内8 个位对应该列的8 个LED,从Bit0 到Bit7 分别对应从上到下的LED,如图6所示。图6 点阵式LED寄存器组2.3 LED编程本次实验中,利用 LED驱动程序“s3c2410-led.o”提供的open、ioctl、write、release等函数控制LED显示。可在相同目录下找到其源程序“s3c2410-led.c”进行分析。2.3.1 7段LED的段码表由
14、于开发板上两个数码管的连接是共阳极,分别显示“十位”和“个位”数字,中间是一个点号,总是让它置“1”。所以当想要其中之一显示为“0”时,那么其对应的段码应为“11000000”,转化为十六进制即为0xc0。同理可以给出“1”“9”的段码,从而形成如下段码表:unsigned char LEDCODE11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;注意:前10个表示字符“0”“9”的段码,最后一个表示各段全灭,不显示。用户程序使用ioctl函数用来控制2个数码管的显示: ioctl(fd,0x12,LEDWORD);由于两个8字数码管需要同时显示,故需要将“十位”的段码左移8位,拼接上“个位”的段码,形成一个16位的LEDWORD。2.3.2点阵式LED的显示缓冲区如要显示字符或图形,需要先给出对应点阵数据存储在缓冲区才能显示。图7所示的是字符“0”和心形图的点阵,参照图6分别给出各自8个字节中的数据为:“0”: 0x00,0x00,0x
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1