作者:empty 页数:419 出版社:empty |
这个是RT-Thread编程指南的PDF版本, 由github.com上最新提交内容自动生成.前言程,本书是RT-Thread的编程手册, 用于指导在RT-Thread实时操作系统环境下如何进行编
适合读者本书用于指导在RT-Thread实时操作系统环境下如何进行编程。
第1章简介RT-Thread是一款由中国开源社区主导开发的开源嵌入式实时操作系统(遵循GPL v 2+许可协议, 当标识产品使用了RT-Thread时可以按照自有代码非开源的方式应用在商业产品中) , 它包含实时嵌入式系统相关的各个组件:实时操作系统内核, TCP/IP协议栈、文件系统、libc接、图形引等。·底层移植、驱动层, 这层与硬件密切相关, 由Drivers和CPU移植相构成。·硬实时内核, 这层是RT-Thread的核心, 包括了内核系统中对象的实现, 例如多线程及·组件层, 这些是基于RT-Thread核心基础上的外围组件, 例如文件系统, 命令行shellRT-Thread在设计及后续的发展方向上会力图保持RT-Thread自己本身的特色:RT-Thread的主要开发成员来自中国, 大家主要利用业余时间进行RT-Thread的开发和维护, 同时也接受开发者, 爱好者, 以及专业嵌入式领域公司向RT-Thread捐赠代码。在上海也有一家专业提供RT-Thread技术服务的服务公司:上海睿赛德电子科技有限公司,RT-Thread以一年为开发、发布周期。RT-Thread的每一个版本都会设定一个目标, 而后的一年开发周期以这个为目标进行开发、演化改进,同时按照每个季度一个测试版本的形·一种是正式版本(或者说稳定版本,维护版本),例如2.0.x正式版本,它是2.0.0正式本手册是RT-Thread开源嵌入式实时操作系统的使用手册。1.1RT-Thread的软件结构RT-Thread实时操作系统是一个分层的操作系统, 它包括了:
其调度,信号量,邮箱,消息队列,内存管理,定时器等实现,接, I WIP轻型TCP/IP协议栈, GUI图形引擎等。·小巧的内核及周边组件;·清晰、简单、低耦合的系统结构;·面向对象, 类UNIX的编程风格;·尽可能兼容POSIX可移植操作系统接的方式;1.2开发、维护式进行推进,发布的版本包括两种:版本的bugfix版本, 在功能上并不添加新的功能, 而着重于对已有bug的修正;·一种是测试版本(或者说开发版本) , 例如2.1.0beta版本。它是以一年期设定目标而演进,完善的版本,相对来说不那么稳定,但具备新的功能,对新的路线的探索;每个开发版本会提前设定出开发目标,一般是通过邮件、论坛进行沟通后进行;同时每年在中国也会有一到两次的开发者会议,会议上会讨论新版本的目标,或者大版本新的方向,在开发活动上, RT-Thread相类似的按照上面的软件体系结构划分成三个部分:·内核(kernel) , 这个是RT-Thread的核心, 也是根本;·组件(component) , 基于核心之上, 把一些功能模块划分成独立的一个个组件模块,做到组件与组件之间的低耦合,组件内部的高内聚;·分支(porting) , 这个是RT-Thread支持的一个个芯片移植, 外设驱动等;这三部分每部分都有维护人,维护人应切实地保证相关部分的正常运行.当前的RT-Thread开发版本放在github.com上, 欢迎每个开发者、爱好者向RT-Thread提交pullrequest.每个组件、分支的维护人在收到pull request后, 会决定是否合并到开发分支中.开发者、爱好者提交的代码应该符合RT-Thread的编程规范, 并尽少地影响到其他组件。
前言
致谢
目录
1简介
1.1RT-Thread的软件结构.
1.2开发、维护
2线程调度与管理
2.1实时系统的需求
2.2线程调度器
2.3线程控制块.
2.4线程状态.
2.5空闲线程
2.6调度器相关接
2.6.1调度器初始化.
2.6.2启动调度器.
2.6.3执行调度.
2.6.4设置调度器钩子
2.7线程相关接.
2.7.1线程创建.
2.7.2线程倒除.
2.7.3线程初始化.
2.7.4线程脱离.
2.7.5线程启动.
2.7.6当前线程.
2.7.7线程让出处理器.
2.7.8线程睡眠.
2.7.9线程挂起.
2.7.10线程恢复.
2.7.11线程控制.
2.7.12初始化空闲线程.
2.8.2线程设计要点.
3.4.1定时器管理系统初始化
3.4.2创建定时器.
3.4.3出除定时器.
3.4.4初始化定时器.
3.4.5脱离定时器.
3.4.6启动定时器
2.7.13设置空闲线程钩子.
2.8线程设计.
2.8.1程序的运行上下文.
3定时器
3.1定时器管理.
3.2定时器超时函数
3.3定时器管理控制块,
3.4定时器管理接
3.4.7停止定时器,
3.4.8控制定时器.
3.5合理使用定时器.
3.5.1定时器执行上下文.
4任务间同步及通信
3.5.2 Stick与定时器精度.,
4.1
关闭中断.
4.1.1使用场合
4.2调度器锁
4.2.1使用场合.
4.3信号量,.
4.3.1信号量控制块.
4.3.2信号量相关接,
4.3.3
4.4互斥量.
4.4.1互斥量控制块.
4.4.2互斥量相关接
创建信号量.
刮除信号量.
初始化信号量:
脱离信号量,
获取信号量.
无等待获取信号量.
释放信号量,
使用场合.
线程同步.
中断与线程的同步
资源计数.
创建互斥量.
倒除互斥量.
初始化互斥量.
脱离互斥量,
获取互斥量.
释放互斥量.
事件控制块.
事件相关接.
创建事件.
刮除事件.
初始化事件,
脱离事件.
接收事件
发送事件
创建邮箱.
初始化邮箱.
脱离邮箱.
发送邮件.
等待方式发送邮件,
接收邮件.
创建消息队列.
出除消息队列.
初始化消息队列
脱离消息队列.
发送紧急消息.
接收消息:
典型使用.
同步消息.
静态内存池控制块.
创建内存池.
倒除内存池.
初始化内存池.
脱离内存池.
分配内存块,
释放内存块,
初始化系统堆空间.
分配内存块,.
重分配内存块.
分配多内存块.
释放内存块.
设置分配钩子函数.
设置内存释放钩子函数
4.4.3使用场合.
4.5事件.
4.5.3使用场合.
4.5.1
4.5.2
4.6邮箱.
4.6.1邮箱控制块.
4.6.2邮箱相关接.
除邮箱.
4.6.3使用场合.
4.7消息队列.
5内存管理
5.1静态内存池管理::
viii
4.7.1消息队列控制块
4.7.2消息队列相关接.
4.7.3发送消息.
4.7.4使用场合
5.1.1静态内存池工作原理.
5.1.2静态内存池接.
5.2动态内存管理.
5.2.1小内存管理模块
5.2.2SLAB内存管理模块,
6.3.1注册设备.
6.3.2移除设备.
6.3.3初始化所有设备
6.3.4查找设备.
6.3.5初始化设备.
6.3.6打开设备.
6.3.7关闭设备
6.3.8读设备
6.3.9写设备
5.2.3动态内存接.
5.3更改情况.
6I/设备管理
6.1块设备.
6.2I/设备控制块
6.3I/设备管理接.
6.3.10控制设备
6.3.11设置数据接收指示
6.3.12设置发送完成指示.
6.4设备驱动.
7异常与中断
6.4.1设备驱动必须实现的接
6.4.2设备驱动实现的步骤.
6.4.3STM32F10x的串驱动
6.4.4insh使用uart设备分析
7.1中断处理过程.
7.2中断栈.
7.3中断的底半处理
7.3.1底半处理实现范例.
7.4中断相关接.
7.4.1装载中断服务例程.
7.4.2屏蔽中断源.
7.4.3打开被屏蔽的中断源.
7.4.4关闭中断.
7.4.5打开中断.
7.4.6与S相关的中断接
8.2.1编译固件.
8.2.2建立动态模块,
9.3.1建立Real View MDK工程.
9.3.2添加源文件.
9.5.1生成MDK工程模板.
9.5.2仿照并修改scns相关文件
9.5.3添加其他相关文件.
9.5.4 Crtex-M 4中的内核相关代码分析
10.3.1 Linux、BSD环境.
10.3.2 Windws环境.
10.4.1配置编译器.
10.4.2SCns基本命令
10.5.1修改编译选项.
10.5.2内置函数.
10.5.3 SCnscript示例1.
10.5.45 Cnscript示例2.
10.5.55 Cnscript示例3,
10.5.65 Cnscript示例4.
10.5.7添加库
10.5.8增加一个SCns命令.
10.5.9RT-Thread building脚本.
11.4.1finsh(C-Style) .
11.4.2finsh(msh) .
11.4.3finsh中的按键
11.5.1finsh(c-style) 的数据类型.
11.6.1宏方式
11.6.2函数方式.
11.7.1添加内置命令.
11.8.1finsh(c-style) .
11.8.2finsh(msh) 内置命令
12.3.1打开文件
12.3.2关闭文件.
12.3.3读取数据.
12.3.4写入数据.
12.3.5更改名称
12.3.6取得状态.
12.4.1创建目录.
12.4.2打开目录.
12.4.3读取目录.
12.4.4取得目录流的读取位置
12.4.5设置下次读取目录的位置.
7.5ARM Crtex-M中的中断与异常
7.6外设中的中断模式与轮询模式.
8动态模块
8.1功能和限制.
8.2使用动态模块.
8.3动态模块相关API.
8.4标准的libdl API.
9移植
9.1使用移植还是自己移植.
9.2移植前的准备.
9.3RT-Thread在ARM Crtex M 3上的移植.
9.4RT-Thread/STM 32其他部分说明
9.5RT-Thread在ARM Crtex M 4上的移植.
10SCns构建系统
10.1什么是构建工具(sftware cnstructin tl) .
10.2RT-Thread构建
10.3安装SCns环境.
10.4SCns基本使用.
10.5SCns进阶.
10.6简单的S Cntruct.
10.7S Cnstruct与SCnscript.
11finsh shell
11.1简介,
11.2工作模式
11.3什么是shell?
11.4初识finsh, .,
11.5finsh特性.
11.6finsh(c-style) 中增加命令/变量.
11.7msh中增加命令,
11.8RT-Thread内置命令.
11.9移植,.
11.10宏选项.
12文件系统
12.1简介.
12.2文件系统、文件与文件夹.
12.3文件系统接.,
12.4目录操作接.
12.4.6重设读取目录的位置为开头位置.
12.4.7关闭目录.
12.4.8除目录.
12.4.9格式化文件系统,
12.5底层驱动接.
12.5.1文件系统初始化.
12.6FatFs.
12.6.1FatFs相关宏:.
12.7NFS.
12.7.1RT-Thread中使用NFS
12.8UFFS.
12.8.1UFFS配置
12.9jffs 2.
12.10/affs.
13SAL-套接字抽象层
主机配置.
开发板配置,
读写页
擦除块.
块状态检查,
标记坏块.
移动页
注册MTDNA ND设备.
发送数据至客户端(不换行).
发送数据至客户端(换行).
发送命令执行结果至客户端,
解析输入命令参数.
创建响应结构体.
除响应结构体
设置响应结构体参数.
发送命令并接收响应.
获取指定行号的响应数据
获取指定行号的响应数据.
解析指定行号的响应数据.
解析指定关键字行的响应数据
串配置信息解析示例
IP和MAC地址解析示例
URC数据列表初始化
发送指定长度数据.
接收指定长度数据
移植相关接.
12.8.2UFFS内存精简.
12.8.3MTDN AND驱动.
12.8.4UFFS示例驱动.
13.1简介,.
13.2网络框架
13.3工作原理
13.4配置选项.
13.5初始化.
13.5.1IWIP协议栈注册.
13.5.2AT Scket网络功能注册.
13.6API接介绍.
xii
13.7网络协议栈接入方式.
14AT Cmmands
13.6.1创建套接字(scket) .
13.6.2绑定套接字(bind) .
13.6.3监听套接字(listen)
13.6.4接收连接(accept)
13.6.5建立连接(cnnect)
13.6.6TCP数据发送(send)
13.6.7TCP数据接收(recv) .
13.6.8UDP数据发送(5end t)
1