没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式系统linux下触摸屏实验报告
需积分: 14 14 下载量 198 浏览量
2009-08-29
08:27:06
上传
评论 1
收藏 518KB DOC 举报
温馨提示
试读
24页
嵌入式实验报告,内容是在linux下完成触摸式手机的功能触摸屏工作原理、ADS7843模/数转换芯片
资源推荐
资源详情
资源评论
一. 硬件平台
1、处理器:三星 S3C2410,200MHZ
2、内存:SDRAM,64M
3、外存:NAND FLASH,64M
4、LCD&触摸屏:SHARP,640×480,TFT
5、串口:RS232,RS485
二.处理器结构
1、处理器核心
MMU,DCACHE,ICACHE,JTAG
2、系统总线
SDRAM,FLASH,LCD,中断,USB
3、外部总线
串口,USB,GPIO
试验一:bootloader (ads、引导)
1、熟悉 ADS 1.2 开发工具
创建、编译、下载、调试工程
2、串口通讯
串口控制器初始化、收/发数据
3、配置主机端的 nfs 服务器
配置主机端的 nfs 服务器,以连接 linux 核心
4、下载并运行 linux 核心
使用自己的串口程序下载并运行 linux 核心
主要内容:
• 编写串口接收数据函数
• 编写串口发送数据函数
• 打印菜单,等待用户输入
• 下载并运行 linux 核心
• 配置主机的 nfs 服务器,与 linux 核心连接
其他部分代码从教师用机中拷贝
linux 核心从教师机中拷贝
主要步骤:
• 修改 bootloader:菜单、串口收发、命令行;
• 使用 ads1.2 编译 bootloader;
• 使用 uarmjtag 下载、调试 bootloader;
• 使用 axd 查看变量、内存,单步跟踪;
• 配置超级终端,与 bootloader 通讯;
• 使用超级终端下载 Linux 核心映像;
• 启动 Linux 核心运行,察看结果;(bootloader 调试成功后再继续以下步骤)
• 主机重起到 ubuntu,配置 nfs,配置 cutecom;
• 重新下载 Linux 核心映像,启动核心运行后,察看是否成功加载 nfs 上的 root 文件
系统。
2
需要补充的代码:
接收串口数据并做相应处理
while(1)
{
打印菜单并等待用户输入;
switch(ch) //根据用户输入做相应处理
{
case '1':
imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);
if(imgsize==0) //下载出错;
else //下载成功;
break;
case '3':
nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);
case '2':
BootKernel(); //这里是不会返回的,否则出错;
break;
default:
break;
}
}
打印菜单:
Uart_puts("Menu:\n\r");
Uart_puts("1.Load kernel via Xmodem;\n\r");
Uart_puts("2.Boot linux; \n\r");
Uart_puts("3.Load kernel from flash and boot; \n\r");
Uart_puts("Make your choice.\n\r");
do{
ch=Uart_getc();
}while(ch!='1' && ch!='2' && ch!='3');
串口读写:
void Uart_putc(char c)
{
while(!SERIAL_WRITE_READY());
((UTXH0) = (c));
}
unsigned char Uart_getc( )
{
while(!SERIAL_CHAR_READY());
return URXH0;
}
3
设置 Linux 核心启动命令行
char *linux_cmd="noinitrd init=/init root=/dev/nfs nfsroot=172.16.68.25:/rootfs,tcp
ip=172.16.68.24 console=ttySAC0";
nfs 服务器设置
编辑/etc/export 文件:
/home/arm_os/filesystem/rootfs 目标板 ip(rw,sync)
/home/arm_os/filesystem/rootfs 主机 ip(rw,sync)
启动 nfs 服务器:
/etc/init.d/nfs-kernel-server restart
测试 nfs 服务器:
mount 主机 ip:/home/arm_os/filesystem/rootfs /mnt
• 试验二:linux kernel (gcc、make)
1、熟悉基本的 linux 命令
文件操作、文件编辑
串口工具、程序开发
2、配置 linux 核心
make menuconfig
3、交叉编译 linux 核心
make zImage
主要工作
• 熟悉基本的 linux 命令
• 配置 linux 核心
• 交叉编译 linux 核心
• 调试自己编译的核心
• 挂载 nfs 上的 root(根目录)
• 编写一个小程序在目标板上运行
主要步骤:
• 用 root 用户登录 ubuntu (合理使用权限);
• 解压缩源码包到/home/下;
• 察看解压缩后的/home/arm_os 目录:Linux 核心、编译器、root 等;
• 配置并测试 nfs;
• 配置 cutecom:115200,XModem,No line end;
• 配置核心:make menuconfig;
• 编译核心:make;
• 下载并运行核心,加载 root 文件系统;
• 重新设置 cutecom 为 LF line end;
• 熟悉基本的 Linux 命令;
• 编写一个小程序在目标板上运行,察看结果。
• 试验三:linux driver (uart)
4
1、Linux 驱动编程
• 基本接口
• 常用函数
2、串口驱动
• 申请中断处理
• 串口数据读、写
主要工作:
• 编写串口驱动初始化、释放函数;
• 编写串口驱动接收数据函数;
• 编写串口驱动发送数据函数;
• 编写串口驱动中断处理函数;
• 编写串口访问应用程序;
• 使用模块方式编译驱动;
• 使用模块方式调试驱动;
• 实现基本的串口数据收发。
主要步骤:
• 填写函数:uart_init、uart_exit、uart_open、uart_ release,实现串口设备初始化、释
放、打开、关闭;
• 填写函数: irq_rev_uart、uart_write、uart_read,实现串口设备中断处理、读、写;
• 用 模 块 方 式 编 译 Linux 核 心 , 生 成 uart.ko , 启 动 目 标 板 Linux 核 心 , 用
insmod、rmmod 等命令操作模块;
• 用 printk 打印调试串口驱动,包括中断相应,读写等;
• 编写应用程序:uart.c,实现打开串口设备、读写等,把主机端由 comcute 发过来的
串口数据回传给主机;
• 将目标板上串口线连到串口 1;
• 编译应用程序 uart.c,实现和主机间的串口通讯。
部分代码:
串口设备初始化函数
int ret;
dev_t devno = MKDEV(uart_major, 0);
if(uart_major){
ret = register_chrdev_region(devno, 1, "uart");
}else {
ret = alloc_chrdev_region(&devno, 0, 1, "uart");
uart_major = MAJOR(devno);
}
if(ret < 0){ printk("Register chrdev region failed!\n"); return ret; }
cdev_init(&uart_cdev, &uart_fops);
ret = cdev_add(&uart_cdev, devno, 1);
if(ret){ printk("Add c device failed!\n"); return ret; }
uart = ioremap(S3C2410_PA_UART1, 0x4000);
device_init();
ret = request_irq(IRQ_S3CUART_RX1, irq_rev_uart, IRQF_DISABLED, "uart", NULL);
5
剩余23页未读,继续阅读
资源评论
uj_mosquito
- 粉丝: 19
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功