ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:2.90MB ,
资源ID:3985949      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3985949.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统实验报告Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统实验报告Word文档格式.docx

1、 使用自己的串口程序下载并运行linux核心二、实验内容1.编写串口接收数据函数2.编写串口发送数据函数3.打印菜单,等待用户输入4.下载并运行linux核心5.配置主机的nfs服务器,与linux核心连接三、实验步骤(1) 修改bootloader:菜单、串口收发、命令行;Bootloader的main()函数:int main(void) ARMTargetInit(); /目标板初始化; /接收用户命令,传递linux核心; Uart_puts(Menu:nr); Uart_puts(1.Load kernel via Xmodem;2.Boot linux; nr3.Load kern

2、el from flash and boot;Make your choice.nr do ch=Uart_getc(); while(ch!=1 & ch!23 return 0;/main;接收串口数据并做相应处理:while(1) 打印菜单并等待用户输入; switch(ch) /根据用户输入做相应处理 case : imgsize=xmodem_receive(char *)KERNEL_BASE, MAX_KERNEL_SIZE); if(imgsize=0) /下载出错; else /下载成功; break; nand_read(unsigned char *)KERNEL_BAS

3、E, 0x00030000, 4*1024*1024); BootKernel(); /这里是不会返回的,否则出错; default: 串口读写:void Uart_putc(char c) while(!SERIAL_WRITE_READY(); (UTXH0) = (c); unsigned char Uart_getc( ) SERIAL_CHAR_READY(); return URXH0; (2) 使用ads1.2编译bootloader;(3) 使用uarmjtag下载、调试bootloader;(4) 使用axd查看变量、内存,单步跟踪;(5) 配置超级终端,与bootloade

4、r通讯;(6) 使用超级终端下载Linux核心映像;(7) 启动Linux核心运行,察看结果;(8) linux核心能够运行到加载root步骤,说明bootloader正常运行;(9) 将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;(10)主机重启到Fedora,配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)重新启动nfs服务器:/etc/init.d/nf

5、s restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt (11)以root用户启动cutecom,将cutecom配置成115200 bps,8位,1位停止位,无校验,xmodem,no line end;(12)使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。四、实验过程中遇到的问题及解决方案问题一 :cmd命令行下烧写bootloader时出现错误,ERRO

6、R:K9S1208 IS NOT DETECTED.解决方法:询问助教,忽略此错误。问题二 :最后一步使用bootloader重新下载linux核心映像之后,目标板linux系统始终无法正常运行到linux命令模式下。重新到xp下,设置bootlinux.c中的Linux核心启动命令行:char *linux_cmd=noinitrd init=/init root=/dev/nfs nfsroot=172.16.68.25:/home/arm_os/filesystem/rootfs,tcp ip=172.16.68.24 console=ttySAC0;通过此设置指定root在nfs服务器

7、上,保持nfs:ip地址的一致。linux kernel (gcc、make)1、熟悉基本的linux命令 文件操作、文件编辑 串口工具、程序开发2、配置linux核心 make menuconfig 3、 交叉编译linux核心 make zImage 熟悉基本的linux命令 配置linux核心 交叉编译linux核心 调试自己编译的核心 挂载nfs上的root(根目录) 编写一个小程序在目标板上运行1.登陆Fedora,在终端进入管理员模式;2.解压缩源码包到/home/下;3.察看解压缩后的/home/arm_os目录:Linux核心、编译器、rootfs等;4.配置并测试nfs;5.

8、配置cutecom:115200,XModem,No line end;6.配置核心:make menuconfig;7.编译核心:make;8.下载并运行核心,加载root文件系统;9.重新设置cutecom为LF line end;10.熟悉基本的Linux命令;11.编写一个小程序hello.c在目标板上运行,察看结果。#includeInt main() Printf(“hello”); Return 0;四、实验中遇到的主要问题及解决方法问题一:核心的配置和编译都成功了,但是打开cutecom不能进入命令行模式,说明加载root文件系统失败,不能调试自己编译的核心。观察mount之后

9、的/mnt目录下是空的,进入XP下发现D盘是空的,于是重新拷贝核心映像文件,重复实验一的工作,最后成功加载root文件系统,进入cutecom命令行。问题二:写成的hello.c程序用gcc编译之后不能在目标板上运行。编译的命令不对,应该用arm-gcc-linux进行交叉编译,而不是用gcc,得到的可执行文件可以用命令./hello成功运行。linux driver (uart)1、 Linux驱动编程 基本接口 常用函数2、 串口驱动申请中断处理串口数据读、写编写串口驱动初始化、释放函数;编写串口驱动接收数据函数;编写串口驱动发送数据函数;编写串口驱动中断处理函数;编写串口访问应用程序;使

10、用模块方式编译驱动;使用模块方式调试驱动;实现基本的串口数据收发。(1) 填写函数:uart_init、uart_exit、uart_open、uart_ release,实现串口设备初始化、释放、打开、关闭;串口设备初始化函数:int ret;dev_t devno = MKDEV(uart_major, 0);if(uart_major) ret = register_chrdev_region(devno, 1, uartelse ret = alloc_chrdev_region(&devno, 0, 1, uart_major = MAJOR(devno);if(ret = UART

11、_SIZE) return -EIO;if(*ppos + size UART_SIZE) size = UART_SIZE - *ppos;do char c; if(!loop_buffer_del(&readb, &c) copy_to_user(buf+i, &c, 1); i+; else schedule_timeout(10); while(i size);return size;串口设备写函数:int i; char wmemUART_SIZE;= UART_SIZE) return -EIO; UART_SIZE) size = UART_SIZE - *ppos;copy_

12、from_user(wmem, buf, size);for(i=0; isize; i+) while(!(_raw_readl(uart + S3C2410_UTRSTAT) & 0x4); _raw_writel(*(wmem + i), uart + S3C2410_UTXH);串口访问应用程序:#include int main() int uart_fd, i; uart_fd = open(/dev/uart, O_RDWR); if(uart_fd 0) printf(Open device error! return -1; for(i=0;50; read(uart_fd,

13、 & printf(%c, c); write(uart_fd, & if(c = q) break; close(uart_fd);(3) 用模块方式编译Linux核心,生成uart.ko,启动目标板Linux核心,用insmod、rmmod等命令操作模块;用printk打印调试串口驱动,包括中断相应,读写等;(4) 编写应用程序:uart.c,实现打开串口设备、读写等,把主机端由cutecom发过来的串口数据回传给主机;(5) 将目标板上串口线连到串口1;(6) 编译应用程序uart.c,实现和主机间的串口通讯。四、实验中遇到的问题及解决方法在超级终端下打开cutecom失败由于没有使用交

14、换机,网络需要重新激活,激活网络之后,cutecom打开成功。对模块化编译方法不太了解,对其过程不清楚。经老师点拨,逐渐明白其过程:首先修改uart.c中的波特率,然后拷贝驱动,把:/home/arm_os/test/st/test3/driver/下的makefile和uart.c拷贝到:/home/arm_os/kernel/linux-2.6.29.8/driver/char下,再拷贝应用程序:把:/home/arm_os/test/st/tesT3/下的makefile和uart.c拷贝到自己的文件夹,用于测试。linux driver (touchscreen)1、 触摸屏驱动初始化

15、坐标值2、 触摸屏、图形系统协调工作触摸屏校准拨号键盘 编写触摸屏驱动初始化、释放函数; 编写触摸屏驱动读取数据函数; 编写触摸屏驱动中断处理函数; 使用模块方式调试驱动; 编写触摸屏读取应用程序; 编写简单图形系统绘制应用程序,绘制一个数字键盘; 实现基本的触摸键盘程序。(1) 函数:ts_init、ts_exit、ts_open、ts_ release,实现触摸屏设备初始化、释放、打开、关闭;触摸屏设备初始化函数:dev_t devno = MKDEV(ts_major, 0);if(ts_major) ret = register_chrdev_region(devno, 1, “ts_

16、ads7843 ts_ads7843 ts_major = MAJOR(devno);ts_cdev, &ts_fops);ts_cdev, devno, 1);spi0_base = ioremap(S3C2410_PA_SPI,0x20);init_waitqueue_head(&wq);ret = request_irq(IRQ_EINT5, ts_isr, IRQF_DISABLED, ts_ads7843TS_OPEN_INT(); ts_time = jiffies;Ts_ads7843 module init.n触摸屏设备释放函数:free_irq(IRQ_EINT5, NULL

17、);ts_cdev);unregister_chrdev_region(MKDEV(ts_major,0),1);Ts_ads7843 module exit.nts_isr、ts_read,实现触摸屏读、中断处理触摸屏设备中断处理函数:if(jiffies = sizeof(struct ts_ret) interruptible_sleep_on(& ts_ret.x = x; ts_ret.y = y; ts_ret.pressure = PEN_DOWN; copy_to_user(buffer, (char *)&ts_ret, sizeof(struct ts_ret); coun

18、t -= sizeof(struct ts_ret); size += sizeof(struct ts_ret); (3) 用模块方式编译Linux核心,生成ts_ads7843.ko,启动目标板Linux核心,用insmod、rmmod等操作模块;(4) 用printk打印调试触摸屏驱动,包括中断相应,读等;(5) 编写应用程序:ts_ads7843.c,实现打开触摸屏设备、读等;(6) 根据该算法得到相应程序。触摸屏访问应用程序:#define Xmin 500#define Xmax 2200#define Ymin 1400#define Ymax 3000static struct

19、 ts_ret unsigned int pressure; unsigned int x; unsigned int y; ts_ret;int main() int x,y; int ts_fd, i; struct ts_ret ts_ret; ts_fd = open(/dev/ts_ads7843 if(ts_fd 0) Open ts device error! i+) if(read(ts_fd, &ts_ret, sizeof(struct ts_ret) if(ts_ret.x Xmax) ts_ret.x = Xmax; if(ts_ret.y Ymax) ts_ret.y

20、 = Ymax; x = (ts_ret.x-Xmin) * 640/(Xmax-Xmin); y = (ts_ret.y-Ymin) * 480/(Ymax-Ymin);%d,%d,%dn,x,y,ts_ret.pressure); close(ts_fd);(7) 在ts_ads7843.c 中增加简单图形系统绘制函数,绘制数字键盘,对触摸屏设备数据进行校正,实现触摸键盘的功能。四、实验中出现的主要问题和解决方法挂载网络文件系统上的root再次失败。经过仔细观察总结,发现系统中的编辑/etc/export文件设置为:/home/ rootfs 目标板ip(rw,sync)/home /ro

21、otfs 主机ip(rw,sync) 分析可能是上一次做实验的人用的主目录路径跟我们的不一样,于是我们重新以/home /rootfs为路径测试测试nfs服务器:/homerootfs /mnt ,在后续文件操作中也一直注意这个方面,解决了多次挂载失败的问题。主要是触摸屏校正的问题按课件上的方法耐心地测试,多次实验后将所得到的值进行求平均数。这样,可以让触摸屏稍微正确一点。但是还是会有偏差。如果用指尖去点,可以准确很多GPRS综合试验 (framebuffer)GPRS综合试验1、 GPRS模块控制试验串口控制GPRS模块AT命令集2、 综合实验电话拨号短消息发送二、实验过程对应的命令集:1、加载必要的模块和程序。2、插入SIM卡到串口的GPRS模块,准备通信。3、拨打电话和发送短

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2