APP下载

一种嵌入式软件版本信息获取方法设计与实现

2013-08-10刘源杨马建辉王知学

电子设计工程 2013年14期
关键词:版本号管脚按键

刘源杨 , 马建辉 , 王知学 , 王 岗

(1.山东省汽车电子重点实验室 山东 济南 250014;2.山东省科学院自动化研究所 山东 济南 250014)

在嵌入式软件的开发阶段,需要经过多次设计迭代并进行充分测试以提高软件可靠性和完善产品性能。采用软件版本的形式对设计过程建立里程碑,以版本标号的形式对各个软件版本进行标识和区分,然后在计算机上以文档管理的形式或者通过专业的版本控制工具对各个版本软件的源代码及其二进制文件进行整理及控制是一种有效的软件开发管理方式并已被广泛采用[1]。在开发过程中,为了提高设计效率,开发和测试并行进行,为了测试缺陷、查找缺陷原因或定位缺陷的引入时间,可能需要对不同版本的软件进行测试。当测试出某个缺陷后,需要定位当前运行软件的版本号进行进一步分析,由于硬件版本的相对固定性,无法通过检查硬件电路的手段来判断当前运行软件的版本,如果软件本身包含版本信息,通过一种手段从软件中获得版本信息,便可以解决上述问题。本文通过采用预留的MCU IO管脚进行软件版本的获取,通过在单个IO管脚上实现按键检测与LED驱动的复用[2],按键触发嵌入式设备输出当前软件版本信息,设备以特定方式LED脉冲闪烁的表现形式输出版本信息。这种方式避免了对代码二进制文件的专业分析和数据查找,可以高效直观得在测试现场获取版本信息,而且因为其简单易实现、占用资源少,在嵌入式设备领域具有广泛的适用性。

1 设计思路

嵌入式设备的软件版本标号采用带小数点的浮点数形式,格式为 X.Y,X和Y的取值区间为[0,9],共计可包含0.1-9.9的99个版本,由于浮点数运算存在误差[3],每次软件定版时,在非易失性存储器中存储一个取值区间为[1,99]的整型常量VERSION来表示版本号,VERSION=(X.Y)*10,从版本号常量VERSION中提取X和Y的计算公式如下:

X等于版本号常量除以10的模,Y等于版本号常量除以10的余数。

设计电路实现按键检测和LED驱动复用IO脚,当IO脚为输入方向时,通过IO状态的读取可以检测按键的按下和弹起状态,当IO脚为输出方向时,可以设置高低电平实现LED的亮灭控制。具体应用时,首先设置IO脚为输入方向,周期检测按键操作,检测到有效的按键按下操作后,当按键弹起时将IO脚设置为输出方向,以PWM的方式驱动LED,首先以频率为2 Hz、占空比为50%的PWM形式输出X个周期的方波脉冲,然后间歇3 s,以频率为1 Hz、占空比为50%的PWM形式输出Y个周期的方波脉冲,进行软件版本的显示[4],显示完成后再次设置IO脚为输入方向。

通过在按键按下并弹起后统计3 s间歇时间前后的LED闪烁次数,便可以得到X和Y的数值,软件版本号计算公式如下:

2 电路设计

硬件电路包括按键、LED、限流电阻R1和上拉电阻R2四个元件,其电路如图1所示。IO脚设置为输入方向时,按键按下,R1端电压为VCC,LED截止处于熄灭状态,由于上拉电阻R2的作用,IO脚电平为高,状态值为1,当按键弹起,R1端电压为0,LED截止,IO脚电平为低,状态值为0。IO设置为输出方向时,在按键处于弹起状态的条件下,IO电平为高时,LED导通点亮,IO电平为低时,LED截止熄灭,当按键按下时,LED截止熄灭。可选择红、黄、蓝不同颜色的LED,不同颜色LED的导通电压不同,决定所使用的限流电阻R1的阻值也不相同,同时调整R1阻值,可以调节LED灯的亮度[5]。

图1 硬件电路图Fig.1 Hardware circuit

3 软件设计

软件设计流程如图2所示。首先设置该IO脚为输入方向,以20 ms为周期读取IO状态,正常状态即按键处于弹起状态时,IO状态为0,按下按键时IO状态为1,当检测到IO状态为1时启动对按键的软件去抖处理[6],当检测到一次有效的按键按下操作后,按键弹起时设置IO脚为输出方向,开始进行LED的驱动控制。

LED控制方式如下:首先根据公式(1)和(2)计算出软件版本号中的X和Y,然后以频率为2 Hz、占空比为50%的PWM方式输出X个周期方波脉冲,此时LED周期闪烁,闪烁次数等于X,最后一个周期结束后熄灭LED,然后启动3 s间歇定时,定时到达后以频率为1Hz、占空比为50%的方式输出Y个周期方波脉冲,此时LED周期闪烁次数等于Y,最后一个周期结束后熄灭LED,并再次设置管脚为输入方向。

4 结束语

文中通过MCU的单个IO管脚复用实现按键检测及LED驱动,通过按键的方式触发读取软件版本信息操作,避免了复杂的诊断协议和诊断接口,通过LED脉冲闪烁的方式输出软件版本信息,直观方便,电路设计和程序设计简单,占用软硬件资源很少,可以方便地在不同的嵌入式设备上实现,具有广泛的适用性和极强的实用价值。

图2 软件设计流程图Fig.2 Software design flow

[1]李欣,张路,谢冰,等.基于构件的软件版本管理系统[J].电子学报,2000(11):119-121.LI Xin,ZHANG LU,XIE Bin,et al.Component based software version management system[J].Acta Electronica Sinica,2000,(11):119-121.

[2]高琼,张全营.基于R5G0C314DA芯片的IO口复用[J].家电科技,2012(6):70-71.GAO Qiong,ZHANG Quan-ying.IO port reuse based on R5G0C314DA chip[J].China Appliance Technology,2012,(6):70-71.

[3]杜叔强.浅析C语言中的浮点数 [J].兰州工业高等专科学校学报,2010(5):26-28.DU Shu-qiang.Analysis of floating-point numbers of C language[J].Journal of Lanzhou Polytechnic College,2010,(5):26-28.

[4]山东省科学院自动化研究所.一种获取嵌入式软件版本信息的方法:中国,201210488667.1[P].2012-11-27.

[5]美国国家半导体公司.发光二极管(LED)的相关应用及驱动技术[J].世界电子元器件,2007,(12):94-97 National Semiconductor.Application and Driver Technology of LED[J].Global Electronics China,2007,(12):94-97

[6]鲁庆宾.矩阵式键盘部分连击的处理[J].电子设计工程,2011(17):34-36.LU Qing-bin.Processing of the matrix keyboard parts combo[J].Electronic Design Engineering,2011(17):34-36.

猜你喜欢

版本号管脚按键
ETCS基线3的系统版本管理方法
基于有限状态机的按键检测程序设计
认识vSphere安装程序
按键消抖在单片机和FPGA实验教学中的应用
一种多方向导光按键结构设计
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
深入浅出 全面获知系统版本号
CMOS数字IC管脚电容的估算与测量
B超机按键的替换与维护