嵌入式开发、软件架构设计
文章平均质量分 78
吴跃前
这个作者很懒,什么都没留下…
展开
-
嵌入式:节省内存的软件设计技巧
本文讲述内存资源紧缺型嵌入式系统中节省内存的软件设计方法。一般主控是单片机控制器的电子产品的成本跟内存的关系可是成正比的,尤其在SOC芯片设计时是固件开发需要重点关注的。大量量产前要确定内置SRAM的大小,而且是在满足功能需求的情况下越小越好。这就需要考究软件系统的设计和编程开发的技能。原创 2014-04-22 09:59:11 · 5725 阅读 · 3 评论 -
嵌入式启动之二:资源宽裕型嵌入式系统
上一篇介绍了资源紧缺型嵌入式系统的启动过程,现在介绍资源宽裕型嵌入式系统的启动过程。原创 2014-08-25 23:24:16 · 2810 阅读 · 4 评论 -
嵌入式启动之三:应用程序的三种存储和加载方式
介绍嵌入式应用程序的三种存储和加载方式。原创 2014-09-07 10:10:37 · 3365 阅读 · 0 评论 -
链接脚本在编程中的高级运用之二——运行时库和C++特性支持
我们在链接脚本在编程中的高级运用之一可变长数组中已经讲述了编译链接的原理,并且以uboot命令为例详细介绍链接脚本如何实现可变长数组。本章在前者的基础上继续讲述链接脚本在运行时库中的高级应用技巧,以及编译器如何支持类对象的构造和析构函数。本章的应用原则上类似于可变长数组,但本章更加侧重讲述运行时库的实现原理,其不仅通过链接脚本的section来实现可变长数组去支持任意多类对象的构造函数和析构函数,而且还支持特定函数体的“可变长”。原创 2015-06-03 10:33:38 · 2262 阅读 · 0 评论 -
软件和硬件都是对生活的高度抽象---论中断控制(ARM体系编程)
不同的芯片体系设计在集成电路系统设计阶段其实都遵循大体一致的设计思想,芯片设计发展那么多年,真正为人所熟知的就是X86架构和ARM架构,当然还有日渐没落的MIPS,其他都是一些简单的控制器芯片体系。而硬件模块设计又是高度抽象于现实需求,很多时候,X86、ARM和MIPS只有底层寄存器和指令级别的差异,对于软件驱动基本是一致的。本文论及ARM体系的中断控制,以基于Cortex A8的S5PV210为例。中断是一种异步工作机制,也是嵌入式处理器的一个核心工作机制,对于实时操作系统来说必不可少。原创 2015-04-20 22:40:56 · 2625 阅读 · 0 评论 -
32位和16位指令集模式自动切换机制
我们都知道MIPS架构体系是32位精简指令集(MIPS32),事实上MIPS在进入控制器市场时还推出了MIPS16e指令集模式,号称能够使编译后的代码减少30%左右。内存资源紧缺型系统一般会使用MIPS16e模式进行编译,以缩减内存使用量,达到降低成本的目的。 本文说明两种指令模式的切换机制,并用实例来详细说明两者之间是如何进行切换的。原创 2014-04-26 17:40:05 · 6301 阅读 · 1 评论 -
以嵌入式系统设计师考试成绩,开始嵌入式博客之旅
http://www.rkb.gov.cn/jsj/cms/s_contents/download/s_dt201003110106.html原创 2014-03-29 20:56:16 · 2238 阅读 · 0 评论 -
链接脚本在编程中的高级运用之一:可变长数组
作为嵌入式软件工程师,应该要清楚程序的每一条指令在哪里,什么时候会被加载到内存,什么时候会被执行。链接脚本会明确告诉你程序的代码和数据在内存中的分布。精确控制代码和数据在内存中的分布是高效利用内存资源的前提。自定义链接脚本是资深嵌入式软件工程师的必备技能,更是嵌入式架构师的最基本要求。此外,灵活定制链接脚本在编程方面有更高级的应用。原创 2015-05-25 17:44:42 · 2027 阅读 · 0 评论 -
如何快速理解一个全新的嵌入式操作系统(续)
如何快速理解一个全新的嵌入式操作系统的要点:项目框架、任务调度、任务间通信、消息的来源和处理、HAL!原创 2015-10-03 23:29:03 · 4351 阅读 · 2 评论 -
如何快速理解一个全新的嵌入式操作系统
在软件大局观作为学习新系统的背景知识的基础上,从软件需求的角度入手就能快速理解和掌握一个全新的系统。本文以TI蓝牙BLE CC254x的源码库和工程为例进行分析研究。原创 2015-09-28 11:12:15 · 7350 阅读 · 2 评论 -
混合编程接口规范
操作系统中C和汇编的混合编程接口规范原创 2017-10-14 14:55:28 · 1350 阅读 · 0 评论 -
基于C语言的状态机框架和实现
本文的目的是基于C语言实现简单高效的状态机。例子是倒计时bomb。Bomb有两种状态,一种是设置状态,一种是倒计时。一旦开始计时,要想回到设置状态必须要调整code的值等于bomb预设的密码值,否则无法进行状态转换。倒计时到0就BOMB了啦。基于这个例子来实现状态机。状态机实现框架包括以下几个部分:1. 状态enum BombStates { SETTING_STATE,//设置原创 2018-01-27 16:08:09 · 6425 阅读 · 0 评论 -
嵌入式启动之一:资源有限型系统启动
启动即是芯片上电复位要运行的程序,启动作为一个模块独立于操作系统而在,因为操作系统需要通过启动这个模块来加载和引导的。所以启动的英文术语是boot loader。我对boot loader的定义包括两部分:1.加载os 2. 为了让os能够正常运行所要做的硬件和软件初始化工作。本文讲述资源有限型系统的启动过程。原创 2014-08-24 23:36:09 · 2761 阅读 · 2 评论 -
由三行代码串讲嵌入式知识点
由简单的三行代码串讲嵌入式知识点。写这篇文章是为了阐述作为一名嵌入式软件开发工程师应该要具备的技能。嵌入式开发工程师不能只关注自己模块的逻辑,而要尽可能把上层和下层乃至整个系统都要全面理解和掌握。原创 2014-04-20 00:20:14 · 2676 阅读 · 3 评论 -
基于80251的嵌入式语音识别
基于80251的嵌入式语音识别,阐述PC端和80251的同步开发!原创 2014-04-23 11:49:11 · 5948 阅读 · 1 评论 -
SoC嵌入式软件架构设计之二:没有MMU的CPU实现虚拟内存管理的设计方法
多个应用程序在同时竞争使用同一块物理内存,其必然会导致某个时刻只存在程序的某个片段在执行,也即是所有程序代码和数据分时复用物理内存空间—这就是内存管理单元(MMU)工作核心作用所在。 本文要谈的是控制器领域SoC的内存管理单元的软、硬件设计,其重要的理念同样是代码和数据分时复用物理内存空间,在保障系统功能和性能的基础上最大限度地节省物理内存的目的。原创 2014-04-30 23:14:00 · 7629 阅读 · 0 评论 -
SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则
上一节讲述了在没有MMU的CPU(如80251、MIPS M控制器系列、ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法,新设计的内存管理管理单元要实现虚拟内存管理还需要操作系统、代码分块(Bank)的支持。Bank设计是为了实现不同时刻运行的Bank(代码块)运行在同一块内存上,所以在运行之前操作系统需要将已存在内存的代码/数据进行缓存处理,并加载将要运行的Bank到该内存上。为了实现这个目的,需要明确几个设计原则。原创 2014-05-03 14:50:27 · 5741 阅读 · 2 评论 -
SoC嵌入式软件架构设计之四:内存空间规划分配
本文继续阐述基于低端控制器CPU的SoC固件架构设计。这一节讲述内存空间的具体规划分配,包括嵌入式固件系统软件层次、程度段组成、物理内存分块设计和具体的程序内存空间分配原则。原创 2014-05-04 23:48:49 · 5198 阅读 · 0 评论 -
SoC嵌入式软件架构设计之五:可执行程序的重构
本节讲述代码分块(Bank)管理思想下可执行文件的重构,即对程序编译后的可执行文件进行重新组织、打包,以在加载阶段获得最高的执行效率,减少内存占用。要使执行效率高,意味着可执行文件的格式尽可能简单,解析执行文件的流程简单,相应地,解析过程代码量少,即能够减少内存的占用。原创 2014-05-05 23:22:02 · 3331 阅读 · 0 评论 -
SoC嵌入式软件架构设计之一:系统内存需求评估
内存是SoC(System on Chip,片上系统)集成设计的重要模块,是SoC中成本比重较大的部分。内存管理的软硬件设计是SoC软件架构设计的重要一环,架构设计师必须要在成本和效率中取得平衡,做到在节省内存的同时保证整个系统的性能。系统内存需求评估是对嵌入式软件架构师的最基本要求,同时也是其最重要的技能之一。一般在SoC项目立项的时候,架构师就要完成系统内存需求评估。原创 2014-04-28 00:00:59 · 7367 阅读 · 1 评论 -
SoC嵌入式软件架构设计之六:API设计方法
在嵌入式系统中,驱动都是以API的方式提供给应用进行调用。这里介绍嵌入式系统的API设计和管理实现方法。原创 2014-05-11 22:05:43 · 3448 阅读 · 0 评论 -
嵌入式文件系统:NTFS和EXFAT比较
FAT32文件系统在嵌入式被广泛使用,最多可以支持单个文件大小到4GB,也不能满足市场的需求,需要考虑支持一种文件系统,单个文件大小超过4GB。原创 2014-04-25 22:49:32 · 2646 阅读 · 0 评论 -
SoC嵌入式软件架构设计之七:嵌入式文件系统设计
系统区(system disk,SD)包括操作系统、驱动、中间件、应用和字库、UI资源等文件,本文讲述SD区的文件系统设计。文件系统最主要的目标是为了实现单个文件的定位和读写。因为一般代码都是不可自修改的,即量产之后不会有写操作,所以嵌入式系统的SD文件系统就是为了能够简单、高效地定位某个文件和读取文件中的数据。本文将阐述SD文件系统的设计要点。原创 2014-05-13 23:16:01 · 2814 阅读 · 0 评论