ucos-ii下bootloader...

52
uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技) [email protected] 2004.5.23 2004.5.23

Upload: others

Post on 31-Mar-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II下bootloader与驱动程序开发

演讲人:刘淼(博创科技)

[email protected]

2004.5.232004.5.23

Page 2: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II与bootloader

Page 3: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

Bootloader的任务• 硬件系统自检

• 配置其他Bank或者端口、外设等工作模式

• 处理系统的中断

• Flash编程、系统的下载

• 参数和数据的设置、存储和传递

Page 4: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

异常类型

FIQ

IRQ(Interrupt ReQuest)

未定义指令

预取中止

数据中止

复位

软件中断Software interrupt

通过软件中断产生

进行管理员模式中获得

通常要求特殊的管理功能,如操作系统支持

Page 5: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

ARM中异常的优先级

(1) Reset (highest priority)

(2) Data abort

(3) FIQ

(4) IRQ

(5) Prefetch abort

(6) 未定义指令, Software interrupt (最低优先级)

Page 6: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

• 只要产生异常就会导致正常和程序流程被临时停止,例如外围中断服务程序

• 在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复.

如何处理异常

Page 7: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

进入异常的操作-1

• 在相应的链接寄存器LR (r14)中保存下一条指令的地址

• 将CPSR复制到相应的SPSR中

• 强制使CPSR模式位置成对应异常类型的值

• 强制使程序计数器指向相应异常向量,取下一条指令

Page 8: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

进入异常的操作-2R14_<Exception_Mode>=Return LinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=Exception Mode NumberCPSR[5]=0 ;当运行于ARM状态时

IF<Exception_Mode>==Reset or FIQ then;当响应FIQ异常时,禁止新的FIQ异常

CPSR[6]=1;CPSR[7]=1;

PC=Exception Vector Address

Page 9: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

异常向量

Page 10: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

处理系统的中断

• 带有MMU或者支持remap的处理器,使用重映象

的方法

• ARM720T、ARM920T

• S3C4510

• 不支持(或者不使用)重映象的处理器,需要在bootloader中处理中断、或者软件重定位

Page 11: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

bootloader中处理中断的问题如果处理器不支持remap

• 通常Bootloader所在的空间是ROM空间

• ARM的跳转指令(B或者BL),只能相对寻址±32MB空间

Page 12: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

查表法

• 中断向量表建立在RAM空间的指定地址

• Bootloader中的程序查找RAM空间的向量地址并跳

• 向系统添加中断需要修改RAM中的中断向量表,不用修改Bootloader中的代码

Page 13: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

查表法的代码分析

AREA Init,CODE,READONLY

ENTRY b ResetHandler ;for debugb HandlerUndef ;handlerUndefb HandlerSWI ;SWI interrupt handlerb HandlerPabort ;handlerPAbortb HandlerDabort ;handlerDAbortb . ;handlerReservedb HandlerIRQ ;handlerIRQb HandlerFIQ ;handlerFIQ

Page 14: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

$HandlerLabel HANDLER $HandleLabel

$HandlerLabelsub sp,sp,#4stmfd sp!,{r0}ldr r0,=$HandleLabelldr r0,[r0]str r0,[sp,#4]ldmfd sp!,{r0,pc}MEND….

HandlerIRQ HANDLER HandleIRQ

Page 15: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

sub sp,sp,#4

栈内的数据SP

CPC

R1

R0 XXXXXXXX低地址

高地址

堆栈增长方向

stmfd sp!,{r0}

XXXXXXXX

ldr r0,= HandleIRQ

HandleIRQ

ldr r0,[r0]

IRQ_ISR

str r0,[sp,#4]

IRQ_ISR

ldmfd sp!,{r0,pc}

IRQ_ISR

Page 16: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

重定位法

• 直接对PC指针进行操作,使程序通过bootloader的空间直接跳转到对应的RAM空间

• 比如S3C44B0中:

• SDRAM空间从0x0C000000开始

• 系统(uCOS-II)放在0x0C000000处

• 在bootloader的异常向量表中使用ADD指令跳转

Page 17: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

ADD的限制ARM的数据处理指令格式为:

xxxx000a aaaSnnnn ddddcccc ctttmmmm 寄存器形式

xxxx001a aaaSnnnn ddddrrrr bbbbbbbb 立即数形式

ADD Rd, #0

• 如果使用立即数形式,则操作数2为:Op2 = #b, ROR #2r

Page 18: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

重定位法的代码分析

B ColdReset;when enter interruption jump to sdram areaadd pc, pc, #0x0C000000;UndefinedInstructionadd pc, pc, #0x0C000000 ;syscall_handleradd pc, pc, #0x0C000000 ;PrefetchAbortadd pc, pc, #0x0C000000 ;DataAbortadd pc, pc, #0x0C000000 ;ReservedHandleradd pc, pc, #0x0C000000 ;IRQHandleradd pc, pc, #0x0C000000 ;FIQHandler

Page 19: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

PC+8• 受到流水线的影响,读取得PC指针和实际的差8个

0x18:add pc, pc, #0x0C000000

实际跳转到了0x0C000018+8地址处

所以,RAM中程序的异常向量表要从0x0C000008处开始

Page 20: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

嵌入式以太网的设计方法

Page 21: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

以太网接口的基本知识1、传输编码

• 曼彻斯特编码

• 差分曼彻斯特编码

Page 22: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

以太网协议

• 以太网的物理传输帧 (IEEE802.3 )

32位可选不超过1500字节16位48位48位8位56位

FCSPADDATATYPESADASDPR

PR: 同步位,收发双方的时钟同步,也指明传输的速率(10M、100M)SD: 分隔位,表示下面跟着的是真正的数据,而不是同步时钟DA: 目的地址,以太网的地址为48位地址。如果为都为F,则是广播地址SA: 源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址TYPE:类型字段,表明该帧的数据是什么类型的数据。如:0800H 表示数

据为IP包DATA:数据段,该段数据不能超过1500字节。PAD: 填充位。以太网帧传输的数据包最小不能小于60字节, 当数据段不足

46字节时,后面补000000.....(当然也可以补其它值)FCS:32位CRC数据校验位。该校验由网卡自动完成

Page 23: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

以太网的应用

• PR,SD,PAD,FCS这几个数据段是由网卡自动产生的;只需要理解DA、SA、TYPE、DATA四个段的内容

• 所有数据位的传输由低位开始(传输的位流使用曼彻斯特编码) • 以太网的冲突退避算法是由硬件自动执行的

• DA+SA+TYPE+DATA+PAD最小为60字节,最大为1514字节

• 以太网卡可以接收三种地址的数据,一个是广播地位,一个是多播地址(在嵌入式的环境中一般不用),一个是它自已的地址

• 任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配。

Page 24: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

嵌入式的以太网方案

• 嵌入式处理器+网卡芯片(RTL8019)• 对嵌入式处理器没有特殊要求,通用性强

• 处理器和网络数据交换通过外部总线,速度慢,不适合于100M网络

• 带有以太网络接口的嵌入式处理器

• 处理器面向网络应用

• 处理器和网络数据交换通过内部总线,速度快

Page 25: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

RTL8019的原理框图

Page 26: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

TCP/IP协议的层次

BSD套接字(BSD Sockets) 应用层(Application)

物理层 (Physical)

IEEE802.3 Ethernet MAC数据链路层(Data Link)

IP、ARP、ICMP、IGMP网络层 (Network)

TCP、UDP传输层 (Transport)

Page 27: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

嵌入式以太网中主要处理的协议

• ARP(Address Resolation Protocol)地址解析协议

• ICMP (Internet Control Messages Protocol)网络控制报文协议

• IP(Internet Protocol) 网际协议

• TCP(Transfer Control Protocol) 传输控制协议

• UDP(User Datagram Protocol)用户数据报协议

Page 28: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

ARP协议• 网络层用32 bit的IP地址来标识不同的主机,而链路层使用48 bit的物

理(MAC)地址来标识不同的以太网接口。只知道目的主机的IP地址并不能发送数据帧给它,必须知道目的主机网络接口的MAC地址才能发送数据帧。

• ARP的功能是实现从IP地址到对应物理地址的转换。源主机发送一份包含目的主机IP地址的ARP请求数据帧给网上的每个主机,称作ARP广播,目的主机的ARP收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个包含目的主机IP地址及对应的MAC地址的ARP回答给源主机。

• 每台主机上都有一个ARP高速缓存,存放最近的IP地址到硬件地址之间的映射记录。通常每一项的生存时间为20分钟

Page 29: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

ICMP协议• IP层的附属协议,IP层用它来与其他主机或路由器

交换错误报文和其他重要控制信息。

• ICMP报文是在IP数据报内部被传输的。

• 两个实用的网络诊断工具,Ping和Traceroute(Tracert),都是利用该协议工作的。

Page 30: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

IP协议• IP工作在网络层,是TCP/IP协议族中最为核心的协议。所有的TCP,UDP,ICMP以及IGMP数据都以IP数据报格式传输。

• IP数据报最长可达65535字节,其中报头占32 bit的数目。包含各32 bit的源IP地址和目的IP地址。在嵌入式应用中,简化设计,IP数据报长度等于数

据链路层的数据长度。

Page 31: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

TCP协议• TCP是一个面向连接的可靠的传输层协议。TCP为两台主机提供高可靠性的端到端数据通信。主要包括:• 发送方把应用程序交给它的数据分成合适的小块,并添加附加信息(TCP头),包括顺序号,源、目的端口,控制、纠错信息等字段,称为TCP数据报。并将TCP数据报交给下面的网络层处理。

• 接受方确认接收到的TCP数据报,重组并将数据送往高层。

Page 32: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

UDP协议• UDP是一种无连接不可靠的传输层协议。

• 把应用程序传来的数据加上UDP头(包括端口号,段长等字段),作为UDP数据报发送出去,

但是并不保证它们能到达目的地。可靠性由应用层来提供。就象发送一封写有地址的一般信件,却不保证它能到达。

Page 33: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

关于端口

• TCP和UDP采用16位的端口号来识别上层的TCP用户,即上层应用协议如FTP,TELNET等。

• 常见的TCP/IP服务都用1-255之间的端口号。例如FTP服务的TCP端口号都是21,Telnet服务的TCP端口号都是23

• 256-1023之间的端口号通常都是提供一些特定的Unix服务

• TCP/IP临时端口分配1024-5000之间的端口号

Page 34: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

基于ARM和uCOS-II的TCP/IP协议

• uCOS操作系统的内核中没有集成TCP/IP的协议栈,但是,TCP/IP的协议的特点决定了,它要想

很好地实现,必须要有一个多任务操作系统的支持。在嵌入式应用的领域中,uCOS也是一个很好

的选择

Page 35: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

在ARM上的TCP/IP协议栈的问题

• 32位处理器的字节对齐的问题

• ARM是一个32位处理器,通常,如果没有特殊的要求,C语言中的结构体(struct)要求4字节对齐的。但是,在TCP/IP协议中,会有如下两种问

题:

• 要求多个数据是紧缩在一个4字节中

• 有的4字节的数据从以太网的物理层接收以后,在内存中并不是4字节对齐存储的

Page 36: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

字节对齐问题的解决

• 通过,使用紧缩数据相关的关键字,可以让C语言

的结构体以紧缩的方式存储(并不不是每个结构体成员都是4字节对齐),比如在ARM SDT中,使用__packed关键字定义的结构体(struct)编译的时候,就可以生成紧缩的数据段。

Page 37: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

ARM的问题• 然而,作为32位处理器,和x86不同的是,ARM不支持非对齐字节的数据传输。就是说,在C语言里,一旦使用了32位的指针操作一个非4字节对齐的数据,ARM就会陷入一个异常。这个问题将会给TCP/IP(或者其他软件)的移植,带来很多麻烦。一定要小心的处理这些问题。

Page 38: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

BSD套接字(BSD Sockets) • BSD Sockets使用的最广泛的网络程序编程方法,主要用于

应用程序的编写,用于网络上主机与主机之间的相互通信

• UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是来自BSD Sockets

• Socket分为Stream Sockets和Data Sockets• Stream Sockets是可靠性的双向数据传输,使用TCP协议

• Data Sockets是不可靠连接,使用UDP协议

Page 39: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

套接字的使用

UDP服务器端和一个UDP客户端通信的程序过程• 创建一个Socket

sFd =socket (AF_INET, SOCK_DGRAM, 0)

• 把Socket和本机的IP,UDP口绑定bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize)

• 循环等待,接收(recvfrom)或者发送(sendfrom)信息• 关闭Socket,通信终止

close (sFd)

Page 40: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II下的驱动程序• uCOS-II没有给驱动程序提供统一的标准接口

• 任何在系统中对于硬件的管理都可以称为uCOS的驱动程序

• 为了方便驱动程序的模块化划分,提高代码的可重用性,uCOS-II的驱动程序可以自定义标准

Page 41: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

驱动程序抽象层

• 操作系统只和特定的驱动抽象层通讯,无论在抽象层下面对应的是什么类型的设备,对操作系统和用户的应用程序来说都是统一的接口。

• 通过使用C语言的指针函数的方法,实现了驱动抽象层的软件设计。通过指向不同驱动子程序的函数指针,为同一操作系统挂载了多种驱动程序。

Page 42: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II中CAN总线驱动程序结构

Page 43: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II中CAN总线驱动程序剖析

• 在can.h中定义CAN总线驱动程序的结构can_driver_t

• 通过全局数组can_driver挂载CAN总线驱动

• CAN总线的抽象层在can.c中实现

• 驱动程序在mcp2510.c中实现

• 系统的启动与驱动程序的加载过程

Page 44: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

触摸屏(键盘)驱动程序结构

Page 45: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

触摸屏驱动程序剖析

• ../ucos-ii/add/OSAddTask.c中的任务初始化函数OSAddTask_Init的触摸屏的初始化函数TchScr_init

• 创建触摸屏任务Touch_Screen_Task• 注册系统中断(SetISR_Interrupt)• 开启S3C44B0外部中断4567(TS_OPEN_INT)• 中断程序Touch_Screen_ISR的实现

• 触摸屏的查询任务

Page 46: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

键盘驱动程序剖析

• ../ucos-ii/add/OSAddTask.c中的任务初始化函数OSAddTask_Init的创建键盘任务Key_Scan_Task

• 键盘初始化函数KeyBoard_init();• 中断程序ISR_Key的实现

• 键盘的查询任务

• 键盘映射表KeyBoard_Map

Page 47: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

uCOS-II下的应用程序举例

Page 48: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

嵌入式系统开发的一点思考

Page 49: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

嵌入式的一时兴起

• 系统的模块化设计思想

• 软件的模块化

• BSP/驱动程序

• 操作系统

• 应用程序

• 硬件的模块化设计

• 基于平台的开发

Page 50: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

核心模块的设计思想

• 同一个硬件平台,内核相对固定

• 一次设计,重复使用

• 方便调试与二次开发

Page 51: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

基于模块的开发举例——高压变频器控制器的应用

640x480 256 LCD

双串口

触摸屏

键盘

USB

Page 52: uCOS-II下bootloader 与驱动程序开发read.pudn.com/downloads75/ebook/275705/3、uCOS-II下的... · 2003-05-24 · uCOS-II下bootloader 与驱动程序开发 演讲人:刘淼(博创科技)

谢谢!http://www.up-tech.com

[email protected]

2004.5.23