《嵌入式开发探秘》之第一章 前言
来源:互联网 发布:为什么讨厌中国人 知乎 编辑:程序博客网 时间:2024/06/07 14:53
前两年受朋友所托,帮其公司牵头开发一套嵌入式系统,前后历时一年有余,系统开发完成后,一直想把开发过程中的一些体会和点滴经验整理成书,分享给奋战在一线的嵌入式开发的朋友们,苦于总是找不出成片的时间,只好作罢。最近稍微有点闲暇,先在微博上一点一点攒出来吧。也算对自己一个交代。
1.1 项目简介
为了便于大家理解后续内容,先对项目做一个简单介绍。本项目对甲方来说呈现的是产品形态,对我来说就是一个项目,项目者,一次性,个性化,定制化,短周期为其属性;所谓产品,则有通用性,生命周期,迭代过程,版本管理等要素。项目的目标是在规定的时间内,利用有限的资源,高质量的完成某个特定用户的需求;而产品的目标是解决一批同类用户的通用需求。项目和产品是相辅相成的关系,很多产品就是从项目中来的。有点绕,算啦,别啰嗦了,待会吧自己也绕晕啦。
本项目是开发一个集中监控产品,用于电力行业的直流屏系统。需要完成的主要功能包括:(1)实现与各类模拟量和开关量采集设备间通信,通信方式支持RS485和CAN,以图形界面方式呈现各类采集量;(2)支持图形界面下的定值设置及定值下发,根据设定定值做出相应故障判断并声光告警;(3)与绝缘仪配合实现母线和馈出支路绝缘监测,包括交流窜入和直流互窜监测;(4)实现基本的电池管理功能,包括均浮充管理、电池实时容量估算、电池曲线、在线活化、环境温度监测等;(5)根据告警类别给出不同的开出量;(6)实现与后台系统的通信,要求支持MODBUS、CDT91、IEC61850等通信协议,硬件上要支持双网口。(7)系统需要支持触摸屏和鼠标输入设备,至少提供3路RS485接口,一路RS232接口,2路CAN2.0A接口,2路USB接口,7个干接点开出量接口。
1.2 硬件设备选型
硬件设备选型需要考虑的因素主要包括:产品功能需求及性能目标、成本控制指标、研发周期要求等。综合上述因素,决定选用美国TI公司的AM3358处理器,这是一款基于ARM Cortex-A8的微处理器,选择它的主要原因是它支持2路工业千兆位以太网 MAC,2路控制器局域网 (CAN) 端口以及6个UART端口,比较契合本项目对外设端口的要求。为了进一步缩短开发周期并保证项目可控,最终选定了由深圳英培特提供的基于AM3358开发的核心版,自己开发接口版。
1.3 软件系统选型
软件系统选型主要选择的就是操作系统,而目前适用于嵌入式设备的操作系统有很多,比如Linux、WinCE、Android、uCLinux、VxWork、uCOS-II、PalmOS、FreeRTOS、Symbian等,但绝大多数情况下都是在Linux和WinCE中做选择。本项目最终选用了Linux,主要基于以下原因:(1)Linux是完全开源的,有一大批Linux的爱好者在世界各地为其升级完善做着默默无闻的工作,资源获取方便;(2)Linux内核相对紧凑,可裁剪,效率高;(3)Linux是跨平台系统,支持包括x86、ARM、MIPS、PowerPC等几乎所有的CPU架构;(4)当然还有一个最重要的原因,它免费。
相比于WinCE,Linux也有其劣势,特别是针对本项目,因为有大量图形界面处理工作,显然WinCE在图形界面处理方面要方便的多。好在现在Linux下也有很多GUI的解决方案可选,包括Qt、GTK+、wxWidgets、Swing/AWT等,本项目最终选定了Qt,一方面是其跨平台支持,再者是因为其提供完整的开发工具链。
- 《嵌入式开发探秘》之第一章 前言
- [ARM嵌入式系统开发]第一章之Dhrystone
- [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件
- 《嵌入式开发探秘》之第二章 开发环境搭建(1)
- 《嵌入式开发探秘》之第二章 开发环境搭建(2)
- 《嵌入式开发探秘》之第二章 开发环境搭建(3)
- [ARM嵌入式系统开发]第一章之RISC和CISC
- 第一章:前言
- 【读书笔记】《程序员修炼之道》前言+第一章
- iOS开发之前言
- 从余业自学到专业开发出嵌入式操作系统之路(前言)
- android 开发之路-------前言
- 开发人生系列之-前言
- python开发数据库之前言
- [ARM嵌入式系统开发]读书笔记第一章之ARM对RISC的改进
- storm入门教程 第一章 前言
- Storm入门教程 第一章 前言
- 译者序+前言+第一章
- 微服务架构的优势与不足
- 二分答案加双指针扫描 gym101194D
- java颜色设置
- 积分
- quickSort
- 《嵌入式开发探秘》之第一章 前言
- Spring的事务管理器
- Android内的HashMap与Java8中的HashMap
- 第十一个Java程序,计算QQ等级。
- 【python】3.6版本使用http.client网络请求示例
- 浅显易懂地解说 Paxos 的算法
- 学生信息系统学习心得四、学籍管理模块的创建
- html5自动弹出软键盘的方法
- idea注册码