务子程序。系统启动后,按 12345678任意键,相应的八段数码管就会点亮。当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。处理器能够准确无误地响应中断,是因为 ARM 体系结构里有一个中断向量表,该中断向量表将系统能够响应的 7 种异常中断类型的“入口地址”登记在一块连续的字节空间内,每种异常中断的“入口地址”占据 4 个字节,这里“入口地址”实质是一些跳转指令或者是让 PC指针赋值的指令,通常使用 B 或 ldr 指令。简单地说,异常中断发生首先会跳转到中断向量表,此时跳转的位置会由系统根据中断类型来判断,由于中断向量表实质也是跳转指令所组成的指令序列,所以系统会再进行一次跳转,这次跳转便跳到中断处理程序(中断服务例程)的入口。系统复位后,IRQ 和 FIQ 中断都是被禁止的,所以即使建立了中断向量表,当有中断请求也是不会响应的,因此在系统复位后,必须通过程序控制来打开 IRQ 和 FIQ 中断。
2014年3月8日
本次例子是 PXA270 的串口传输程序,并以两种方式实现:程序查询状态寄存器和中断处理。本章例子根据 PXA270 开发板的串口硬件连接,不加入 Moden 传输协议,紧紧利用 UART引脚 TXD 和 RXD 进行数据接收和发送。实验目标是通过配置 FFUART(串口 1),将字符显示在 PC 机上超级终端上,并且将键盘输入内容回显在超级终端上。实现步骤:配置 GPIO 寄存器,实现 CPU 引脚 34,39 接收发送功能。配置寄存器 POWER Manager Sleep Status (PSSR)。配置全功能 UART 的寄存器。编写接收字符和输出字符函数。编写 FFUART 的中断服务例程。PXA270 处理器有四个 UART,分别是:全功能 UART(FFUART),蓝牙 UART(BTUART),标 准 UART ( STUART ) ,硬件 UART ( HWUART ) 。UART 即 universal asynchronous receiver/transmitter 的简写。每个 UART 能将从 RXD 端接收的串行数据转变为并行的数据,并且能够将来自处理器的并行数据转化串行数据,然后通过 TXD 端发送出去。根据UART 是否在 FIFO 模式下执行,发送和接收的数据会有选择的锁存在发送/接收 FIFO。
11
2014年3月9日
本次实验主要使用 GPIO 口进行模拟脉冲信号,来驱动步进电机转动。当系统启动后就会正转起来,一直运行下去。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。UCN4202A,它包含低功率 CMOS 逻辑控制部分和达林顿管输出驱动极,最大输出电流为 1.5A,使用单相或双相,半步激励方式,内设续流二极管和过热保护电路。UCN4202A 的控制功能包括 PWM 波输入,电机转动方向,输出使能和复位功能。OE 端使用 GPIO53 控制,为高时,电机没有输出;为低时 UCN4202A 开始工作。DIC 端为方向端,为低时为正向,为高时为反向。
2014年3月10日
本程序主要通过一个简短的 Boot 程序揭示如何编写开发板的启动程序,让我们能够清晰了解系统复位后从 0x0 开始引导,本引导程序驱动底板上的八盏 LED 就会向右点亮,不断循环下去。-ro-base 是用作设置 Region 的执行时位置,执行时位置是指映像执行时在存储空间的位置,因为具有可读写属性的 Area 在执行前会从 FLASH 存储空间拷贝到 RAM 存储。链接参数-rw-base 的使用,用来指定可读写Section 的执行时地址。因为可读写 Section 是由一个或多个可读写的 Area 所组成。-first object(area),可以通过产生一个映像的 Memory Map 文件来观察各 Area 的地址分配。初始化入口点定义了映像的第一条被执行的指令,在编译程序时可以添加参数-entry address(或-entry
12
offset+object(area) )来标示初始入口点,如果没有添加该参数,只要源程序中有唯一的伪操作 ENTRY,则程序就被默认成初始入口点。即当镜像被烧入 FLASH 后,以 ro_base 属性决定的映像位置的第一条指令就是被定义在 ENTRY 标示的段的第一条指令。
2014年3月11日
了解 RTC 应用及相关概念,实际控制使用 Real time clock(RTC),显示系统时间本次例子是一个使用 HZ 时钟来显示系统时间的程序,还利用实验六的串口传输实验的知识,通过串口打印系统的时间。首先设置超级终端的波特率为 38400,数据流控制设为无。打开超级终端,根据选择项进行操作,按 1 时,显示当前的系统时间。按 2 时,会对系统时间重设。Real-timer clock (RTC),RTC 是一个配置时钟的机制,通过从外部的晶振送入时钟信号到 MCPU,利用倍频或分频产生所需的时钟信号。可以通过配置RTC相关的寄存器,让 RTC 提供一个持续不断的频率,用来反映现实世界使用的时、分、秒时间。通常,RTC 还可以设计成产生一个 1HZ 输出(HZ时钟名称的由来)。它的闹钟功能体现在当 RTC 增量到预定时间后便产生中断或唤醒事件。为了能够产生系统时间,RTC 提供了一个 32 位的计数器 RTC Counter Register(RCNR),该计数器在系统复位后为 0,并在外部时钟源的信号上升沿到来时加 1,可在RDCR、RYCR 寄存器写入期望值,然后该计数器便开始递增。另外,通过在另一寄存器 RTC Alarm Register(RTAR)设置数值(也可以说是时间),当 RCNR 增加到 RTAR 时,便可产生中断。具体来说,当 RCNR 与 RTAR 匹配时,还需要以下条件满足时才能产生中断。首先在寄存器 RTC Status Register(RTSR)对中断的允许位必须设为1,RTC 提供了两种可以产生中断的事件:HZ 中断和 RTC Alarm 中断。当 HZ 时钟的上升沿被检测到或RCNR和RTAR 匹配相等时,RTSR 上相应的状态位就会标示 1,该位会被发送到中断控制器,在中断控制器的 Interrupt Controller
13
2014年3月12日
今天老师将我们所有人分了5个小组,并给我们每个小组分配了不同的项目。我们的项目是“诊所管理系统”,因为这个项目其中包含了一些我们不知道的专业医学知识和实际流程等,所以我们必须去诊所进行实地调查,以此来保证我们最终的作品会满足诊所的管理需求。这里也说明了软件需求分析的重要性,这一环节,可以说是整个软件生成的最为重要和关键的环节。如果我们仅仅根据自己的了解就将项目进行下去,开发出的软件却满足不了客户的要求,也就是说这个软件的作用几乎是0,而我们所有的投入最终都是徒劳的。我想,这是所有人都不愿意看到的结果。
这一周,我们上课的时间进行软件需求分析的知识讲解和软件需求分析的文档制作,而课下我们就利用课余时间进行诊所的实地调查。为了节约时间,我们小组每个人各负责一个学校周围的诊所,对其诊所内的医务人员进行询问,并承诺将最后的成品软件免费提供于其诊所的使用,这样大大的提高了医务人员的热情,并最终获得了我们想要的结果。
2014年3月13日
上一周我们做好了项目的需求分析,这一周,我们就可以根据做好的
需求分析文档来制作该项目的概要设计了,本来计划是用一周的时间来完成该软件的概要设计,但由于软件比较小,并且需要的数据并不是很多,所以老师临时决定,这一周,我们将进行软件的概要设计和详细设计两个部分的文档制作。而下一周的项目详细设计,将改为软件的编码制作,将原来一周的项目编码改为两周。这样一来,我们原本稍微宽裕的时间又变得紧缩起来,而为了能更好的完成概要设计文档和详细设计文档的制作,我们下课后更是一起在教室里加班赶工,还好,经过大家的努力,周五上课的时候,我们小组的两份文档,经过老师的检验,全部通过。
概要设计的基本任务包括制度规范主要就是:将系统划分模块,决定而系统的模块划分,在上一周的需求分析力,我们就已经做出了总结,每个模块的功能,调用关系及界面,即模块姐传递的数据。
需要将诊所划为四个模块:医务人员管理模块、药品信息管理模块、病患管理模块、诊疗记录模块。而这四个模块的具体功能,在经过小组成员的共同讨论后,将其模块的功能罗列如下:
14
一、医务人员管理模块 1、 医务人员入职。 2、 医务人员离职。 3、 医务人员的职务变动。 4、 医务人员的查询。
二、药品信息管理模块 1、 药品信息的入库。 2、 药品信息的删除。 3、 药品信息的改动。 4、 药品信息的查询。
三、病患管理模块 1、患者信息添加。 2、患者信息删除。 3、患者信息修改。 4、患者信息查询。 四、诊疗记录模块 1、诊疗记录的增加。 2、诊疗记录的删除。 3、诊疗记录的修改。 4、诊疗记录的查询。
综上所述,可以发现也就是其模块的增删改查,在细化了各个模块的功能后,我们对应的制作了诊所管理系统的数据库,对其模块划分,也定义了四个表的名称及其属性。
表清单:
医务人员表:TB_DOCTOR 药品信息表:TB_MEDICATION 病患人员表:TB_SUFFERER 诊疗记录表:TB_RECORD
概要文档的制作完成,也意味着我们可以进行下一个步骤了:项目的详细
设计。因为其四个模块所要实施的功能大体相似,所以我们决定只制作出其中一个模块的详细设计,其他模块则参考制作完成的模块。在这里,我们采用医务人员管理模块为例,将对其进行详细的分析,为了清晰明确的看出其数据的走向以及逻辑判断,我们采用程序流程图对该模块的数据流程进行描述。而为了使该项目的详细设计可读性好,我们将该模块中涉及的一些复杂的算法用伪代码来进行
15