【Jsp精品源码栏目提醒】:网学会员,鉴于大家对Jsp精品源码十分关注,论文会员在此为大家搜集整理了“【精品】BeginnerTranningSeminar02_cn - 其它资料”一文,供大家参考学习!
TOPPERS初级实现讲座
JSP-1.4OAKS16 mini碗面计时器版) 第二天 TOPPERS项目培训工作小组 2004-9-10 TOPPERS项目认定 1关于本教材中文版的注意事项 本教材中文版是根据2004年06月07日公开的TOPPERS初级实现讲座(
JSP-1.4 OAKS16 mini 碗面定时器版)(日语版)翻译制作而成。
本教材的中文版著作权归上海横河国际贸易有限公司所有。
上述享有著作权的作者只限于满足以下的 1~3的条件时 ,才许诺无偿使用、复印、更改、 翻印本资料(包括由本资料改编的文件,以下同) 1使用本资料时,应在资料中原封不动的包含上述著作权表示以及使用条件 。
2在更改本资料时,应在资料中包含更改本资料的原因。
但是,作为TOPPERS项目活动的 一个环节更改本资料时,则无必要说明更改本资料的原因 。
3 因使用本资料造成的任何的直接或者间接损害,均与上述享有著作权的作者以及 TOPPERS项目组无关。
2004-9-10 TOPPERS项目认定 2关于本教材的注意事项 关于使用本文献请注意以下几点 1. 关于著作权的表述 ---------------------------------------------------------------------- Copyright C 2004由 竹内良辅(株)理光Platform研发中心 Copyright C 2004 由山本雅基(株)Denso Create 上述享有著作权的作者只限于满足以下的 1~3的条件时 ,才许诺无偿使用、复印、更改、翻印本资料(包括由本资料 改编的文件,以下同) 1 使用本资料时,应在资料中原方不动的包含上述著作权表示以及使用条件 。
2 在更改本资料时,应在资料中包含更改本资料的原因。
但是,作为TOPPERS项目活动的一个环节更改本资料时,则无必 要说明更改本资料的原因 。
3 因使用本资料造成的任何的直接或者间接损害,均与上述享有著作权的作者以及TOPPERS项目组无关。
---------------------------------------------------------------------- 2. 关于本文献如果有任何意见,建议,想法或者疑问时,请通过电子邮件和TOPPERS办事处进行联系。
关于本文献的内容,出于调整和改善内容的目的,会对本文献的内容进行改动。
且不予通告。
3. 本文献使用了Microsoft公司的Clip Art Gallery中的内容。
TRON是“The Real-time Operating system Nucleus” 的简称。
ITRON是“Industrial TRON”的简称。
μITRON是 “Micro Industrial TRON”的简称。
本文献当中所涉及的商品名称以及商标名称都是各个公司的商标,或者是登记商标。
2004-9-10 TOPPERS项目认定 3日程表 第一天 第二天1.开发环境的确认 碗面计时器的实现 0.5小时 进行实现 1.5小时2.所未编入、SESSAME的复习 评价 0.5小时 1.5小时 设计、实现的评价3.SESSAME版教材的动作确认 同步和通信 1小时 1小时 关于程序间通信4.何谓即时OS 关于同步、排他控制 1.5小时 使用事件标志的改组 由RTOS的状态转移确认使用HW 1.5小时 I/F教材 总结、作业 1小时5.进行碗面计时器的设计 1.5小时2004-9-10 TOPPERS项目认定 4 计时器的实现 1.碗面计时器的实现 2.评价 3.同步和通信 4.使用的事件标志的改组 5.总结、作业 2004-9-10 TOPPERS项目认定 5让我们来试着做碗面计时器的TOPPERS/
JSP版。
在此开发环境里,因为没有使用调试器,所以使用任务监视器或者系统日志的垃圾清理功能来清理程序中的错误。
TOPPERS/
JSP实现的基础知识1 系统的初始化顺序和初始化编程 内核启动时,执行依赖于目标的初始化 以后,调用kernel_star函数。
这些处理时,CPU处于不确定状态。
JSP内核中,对每一个目标都准备一个启 动模块,进行这个处理。
详细的文档请参照下面的用户手册。
2004-9-10 TOPPERS项目认定 6 config的目录中,包含目标依存的源代码下面的是目录的命名规则〈处理器名〉-〈开发环境名〉开发环境名〉省略的时候,默认为GNU-GCC的开发环境。
下面的目录表示〈系统名〉。
系统名大多数是以目标板命名的。
下面是M16C的环境的目录构成。
config/m16c-renesas/oaks16 /oaks16_miniM16C-CPU没有GNU开发环境,使用瑞萨(Renease)的开发工具。
板子支持OAK16和OAK16MINI两种类型。
在OBJ的开发环境里,准备了两个类型的TM文件。
OBJ/
Jsp14Timer1 OAKS16用 OBJ/
Jsp14Timer1m OAKS16 MINI用 通常,上电后执行初始化的程序在--下的汇编语言程序start.sM16C的时候为start.a30。
这个程序的结束处调用kernel_start. kernel_star在kernel目录中的C语言程序startup.c中。
startup.c在TOPPERS/
JSP内核的初始化和结束处理的执行程序。
TOPPERS/
JSP实现的基础知识1 编译器的确认 RTOS中,对内核的对象中使用的内存和 资源有动态确保和静态确保 TOPPERS/
JSP中,编译时,对内存和 资源采用静态确保方式。
编译器对内核对象静态的生成自动的可 执行程序。
2004-9-10 TOPPERS项目认定 7 RTOS中,kernel 对象的内存空间确保是在上电后,在编译和连接时决定采用哪种类型。
实际上,绝大多数的RTOS采用动态的确保方式。
TOPPERS的完整内核有动态的内存分配。
在不需要存储管理,存储器容量很小的时候使用静态的分配方式。
TOPPERS/
JSP的静态分配由配置使用自动存储分配程序实现。
配置是从配置文件(cfg),生成定义内存空间的源文件和头文件。
(方便计时器的内容使用事件FLAG改造的事件FLAG的任务间通信息2中记载) 配置通过cfg目录下的cfg命令来执行,这个命令不依存于CPU不管什么样的CPU使用共同的命令。
Build开始时调用cfg命令执行,可以对Biild的log进行确认。
使用TOPPERS/
JSP计时器的实现2 即使无主函数,250ms定时也是可以实现的 在无任务划分的实现时,main主函数在2 50ms内,强制执行了2个程序 在任务划分时、tslp_tsk服务·调用可以在 自己命令中实行250ms的进程 entry_task和timer_task的for返回命令主程 序中,即使没有外部调用,每250ms也可 执行一次 2004-9-10 TOPPERS项目认定 8 在实时OS上,运行2个进程作为任务。
与没有OS情况所不同的是,2个进程不是根据main主命令被调用运行,而是分别在各自的进程上运行。
也就是说,entry_task和timer_task,彼此均是像main主函数那样运行。
如果把switch_process的实际的程序放入到entry_task的for返回命令主程序中,把timer_process的实际的程序放入到timer_task的for返回命令主程序中,即使没有main主命令,也能运行。
使用TOPPERS/
JSP计时器的实现2 两个任务之间如何通信的呢? 从ENTRY_TASK到TIMER_TASK,有必要传 达计时器的状态转移要求。
传达什么样的信息呢? 1.计时器启动通知 2.计时器的时间延长通知 3.计时器的停止通知 根据所传达的信息,TIMER_TASK会发生3种 状态转移 计时器启动状态、计时器超时状态、计时 器停止状态 2004-9-10 TOPPERS项目认定 9 多个的任务所使用的共同数据存放的内存区域被称为共享内存。
任何一方的任务向此领域写入数据,另一方的任务均可进行数据读取,达到信息传递。
将TIMER_TASK作为读取数据的事件,并迁移记时器的状态,请按这样编写程序。
使用TOPPERS/
JSP TIMER的实现3利用共享内存 ENTER_TASK 利用共享内存进行 接受键的设定 信息处理 要求的导入 本次是片假名的写 1.启动 入、片假名的读出 2.停止 共用内存 3.延长 要求的导出 TIMER_TASK Timer状态的转移2004-9-10 TOPPERS项目认定 10使用TOPPERS/
JSP计时器的实现4使用共享内存,数据通信 3个状态使用共享内存(BYTE型的字节区 域)进行事件通信 ENTRY_TASK是通信信息的写入, TIMER_TASK是通信信息的读出。
如果使用任务监视器,可以对2个任务分别 进行程序调试。
共享内存可以用监视器的内存的显示功能进 行参照2004-9-10 TOPPERS项目认定 11 使用TOPPERS/
JSP计时器的实现5 使用TOPPERS的系统日志 像timer1.c的源程序中的一样,作为系统日志函 数,退出时可以显示日志 在syslog_1LOG_NOTICE “Sample entry task starts exinfd.” exinf ENTRY_TASK 运行时,可用日志显示exinf的值 可以设定日志信息的重要性,LOG_INFO默认 为不是显示状态。
vmsk_log函数或者用任务监 视器的设定可以进行显示状态的切换。
重要性请参照include/syslog.h 2004-9-10 TOPPERS项目认定 12使用syslog_n函数的第一个参数,来进行日志信息的重要度的设定。
由于是通过将该值与logmask的值相比较,来进行判断是否进行了显示,调试后,可以对不再需要的日志的显示,以及非显示进行切换。
通过使用TOPPERS/
JSP1.3来进行设定可以对如下函数的设定进行切换。
ERsyslog_setmaskUINT logmask UINT lowmask并且,还可以变更监视器的Log MODE的命令。
/ 日志信息的重要性的定义syslog.h /define LOG_EMERG 0 / 需要关闭的错误 /define LOG_ALERT 1define LOG_CRIT 2define LOG_ERR 3 / 系统错误 /define LOG_WARNING 4 / 警告信息 /define LOG_NOTICE 5define LOG_INFO 6define LOG_DEBUG 7 /程序调试用信息 / 评价 1.碗面计时器的实现 2.评价 3.同步和通信 4.用事件标志进行改造 5.总结、作业 2004-9-10 TOPPERS项目认定 13 让我们评价一下做好的程序。
在进行取得平衡的实现时,有几个技巧。
首先,关于模块的分割·模块尺寸最适合的尺寸 1页的一半程度(30行位置) 为了实现变得简单·系统的明确度 均等型系统(左右均等、上下是理论上-物理上) 只在模块关系上就可以理解系统·重复的最小化 同一功能不要用多个模块来实现·信息隐藏 隐藏用模块处理的数据 评价 请对自己已做成的程序有信心的人发表一下 对于程序,没有正确的答案 可以自行品味设计的质量 模块的分割 尺寸的最适合化、系统的明确性 重复的最小化、信息的隐藏性 模块的凝聚度 凝聚度越高安全性越好 模块的耦合度 耦合度越弱安全性越好 2004-9-10 TOPPERS项目认定 14·模块的凝聚度(コヒージョン) 凝聚度按高的顺序排列。
(1)功能的:持有单一目的的功能、信息、责任和义务。
(2)逐次的:对于同一数据、关联性强、有必然的顺序进行功能集合(3)通信的:对于同一数据多数目的的功能集合(4)顺序的:对于关联不紧密的多数数据、顺序功能(5)同时的:同一时间内发生,互相无关的功能集合(6)理论的:从外部使用时有便利的功能集合(7)偶然的:集合完全没有关系的功能·模块的结合度(カップリング) 结合度弱的顺序排列。
(1)数据的结合:无构造的单一数据(2)构造体的结合:有同一目的的数据成员的集合(3)手动连结的结合:由多数字段构成的构成体(4)控制结合:控制对方模块的标志(5)混合结合:因值的范围而又不同意思的数据、标识等(6)共有结合:所有数据(7)内容结合:参照对方的模块的内部(开发语言的一种) 评价和测试 这个需要注意的地方 评价,调试,测试,任何一个步骤,从操作到 很好运行,取决于开发目标,开发环境,开发 者的技能。
为了评价产品程序,需要做出调试,测试用的 的程序。
在评价前,构成代码的工具整理,语法的检查 或者警告显示内容的测试。
要把这些整理的相 对容易理解一些 开发的目的的实现是最重要的,技术的利用只 是作为实现这个目的的手段。
2004-9-10 TOPPERS项目认定 15 程序的静态的,动态的工具,这类高价的东西,被广泛的销售。
简单有用的基于 C,C,Java语言的代码整理工具使用UNIX的astyle命令,C语言用的语法检查使用UNIX的splint命令。
同步和通信 1.碗面计时器的实现 2.评价 3.同步和通信 4.使用事件标志进行改造 5.总结、作业 2004-9-10 TOPPERS项目认定 16 我们学一下关于作为外部的对象被供给程序间的通信、同步。
作为基本的同步和通信功能,有臂板、事件日志、邮箱、数据平台。
任务间通信·同步的概念任务是虚拟化的进程 任务间的通信·同步是进程间的通信·同步的 虚拟化产物 不指定对方程序、使用通信/同步对像进行同步 通信 程序A × 程序B 指定同步·通信对象 指定同步·通信对象 通信·同步对象 信号量、事件标志、邮箱、数据队列2004-9-10 TOPPERS项目认定 17 信号量1Semaphore OS提供的排他处理机制 词语出处 从前、铁道用来控制火车进入单线区间是“腕 木” 、顺序是只有腕木上挂有“轮子”的火车才 可进入单线区间 2004-9-10 TOPPERS项目认定 18 信号量是通过计算未被使用的资源的有无、数量的表示,使用该资源时的排他控制和进行同步的对象。
释放资源时,信号量的计数器上加1;取得资源时,信号量的计数器上减1。
信号量是由该计数器和等待资源获得的程序的等待队列所构成。
重复资源的获得计数器变为0,因为没有没可以被使用的资源,要求获得资源的程序与信号量的资源等待队列相联接,进入等待状态 在信号量里资源的初期值和对于资源返回为了防止资源返回过度设定了最大资源数。
超过了最大资源数进行资源返回时,发生错误。
信号量ID是为了识别各个信号量的ID。
信号量2Semaphore 使用方法 1个资源会有1个信号量与其相对应 程序1 信号量获得等待 不用担心这个区间有其 单线区间 他程序在使用 应该保护不受竞争程序 信号量返还 的竞争。
这个区间称为 危险·安全。
·可以很好高效率的只保护必要的区间 ·提高源编码的维护 2004-9-10 TOPPERS项目认定 19μITRON4.0式样的信号量的服务·调用如下所示。
1.信号量的生成CRE_SEMID semid ATR sematr UINT isemcnt UINT maxsemID semid 信号量ID号码ATR sematr 信号量属性TA_FIFO TA_TPRIUINT isemcnt 信号量资源数的初期值UNIT maxsem 信号量的最大资源数2.信号量资源的返还ER ercd sig_semID semid ER ercd iseg_semID semidID semid 资源返还对象的信号量号码3.信号量资源的取得ER ercd wai_semID semid ER ercd pol_semID semidER ercd twai_semID semid TMO tmoutID semid 资源获得对象的信号量号码TMO tmout 超时指定(只适用于twai_sem) 事件标志1Event Flag 所谓构造? 通知其他程序时间的发生 事件与标志有对应关系 FLAG设置 事件等待 TASK1 TASK2 FLAG 时间发生的等待状 态 对于复数位的FLAG、可以设定AND或者OR的等待条 件 2004-9-10 TOPPERS项目认定 20 事件标志是按照每个字节的标志进行表示,为了程序间的同步进行的对象。
对于事件标志,是由对应事件的有无用每个位来表示所产生的字节形式,和等待该事件标志的设定程序的等待队列所构成的。
通知事件方面,均可进行设置已指定好的事件标志字节类型的字节或者清除。
另一方面,事件等待方面,直至已经指定好事件标志的字节类型的字节全部或者一部分被设定,程序才可以进入事件等待状态。
要求进入事件等待状态的程序,要求事件等待队列相连接。
对于事件标志的功能,由事件标志的生成、删除功能,设置、重新设置事件标志功能、等待设定事件标志功能、参照事件标志状态功能等功能所构成。