嵌入式Linux裸机开发(四)——定位relocate一、位置有关编码    汇编源文件被编译成二进制可执行程序时编码方式可能与内存地址有关,也可能与内存地址无关。与内存地址有关的为位置有关编码,与内存地址无关的为位置无关编码。    程序在设计时需要规划一个程序运行时的地址(链接地址),编译连接器在链接时必须指定这
原创 2016-06-06 16:10:05
2213阅读
引言以下是一个C语言函数,有三行代码,实现将数字转为对应字符的功能。当然,真正的函数实现应该增加判断a的取值是否在0到9之间,这里简单的逻辑实现仅仅是为了阐述嵌入式的知识点。我们的故事就从我们写下这行代码开始,止于这行代码变成指令在CPU中运行。写这篇文章是为了讲清楚作为一名嵌入式软件开发工程师应该要具备的技能,即其应该要掌握的知识点。char str2num(char a){ char b =
  最近在构思一个嵌入式系统上的应用程序开发框架,这个不单单是做一个应用程序的框架,是一个系统的。要达到的目的就是为业务实现部分的程序提供一个框架,这个框架这么说是一个很模糊打概念,下面详细介绍一下这个框架。 框架要实现一些常用的功能封装: 1. 进程间通信的代码,用于实现进程间数据交互; 2. 实现定时器,做开发时间久了,会发现在业务功能实现的过程中,有好多地方会用到定时器,
 一、命名规范1、命名规范为了使变量能够更好被阅读代码的其他开发人员理解,需要使用前缀•a(数组)、b(布尔值)、i(4字节整型)、u(无符号整型数)、p(指针)、s(字符串)、sz(以NULL结尾的字符串)  --比如:  bool    bFlag;      int &nb
  用C编写可移植和可重用的软件正迅速成为嵌入式软件领域的一项重要活动。但是可移植的C代码不是偶然发生的,它需要意图和深谋远虑。嵌入式开发人员可以遵循七个技巧来帮助确保他们的软件更适合移植。  技巧1——使用模块级API  定义一个模块级API对于C代码是否可移植至关重要。模块级API定义了模块做什么以及它的输入和输出是什么。  技巧2——最小化模块耦合  移植代码时,没有什么比试图引入紧密耦合的
1 嵌入式软件   划分为嵌入式系统与嵌入式软件。前者为硬件,后者为软件。   嵌入式软件有以下几个分类:单线程程序,事件驱动程序,多任务程序。   其中单线程程序包括循环轮询系统,有限状态机。   事件驱动程序包括中断驱动系统,而多任务系统包括单机多任务系统和分布嵌入式软件。   嵌入式软件系统是应用程序和操作系统一体化的程序。嵌入式系统软件的
前言任何工作都应该先评估可行性,接着做计划,然后有效率的利用时间、成本和资源,并在可接受的范围内管理成果的质量。质量是规划出来的。特别是软件系统,若项目前期的设计工作做得扎实,执行时期不断监控,自然测试时期的bug就会减少,且修改bug的投入也较小。项目管理的基本概念项目一开始面对的挑战是--项目目标含糊,充满冲突第二个挑战是--项目关系人缺乏沟通技巧与工具执行过程面临最大的挑战是--计划的准确性
       代码生成器和工具属于编译器的一种,可以自动地将模型语言转换成目标语言,经过多年的研究和发展,国内外的研究学者和软件供应商已经开发了很多的代码生成器和代码生成工具,被广泛的应用于数据库系统和Web平台的开发中,而嵌入式系统与特定的应用领域紧密结合,目前并没有适合嵌入式系统的通用的代码生成器和工具。本文对工业界和学术界关于嵌入式系统的代码生成器和工
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。那么,如何入门嵌入式编程呢?什么是嵌入式?因为首先,嵌入式有不少组合名词,例如嵌入式系统,嵌入式软件,Linux嵌入式,Android嵌入式嵌入式Web,等等。通常对嵌入式的定义其实是对"嵌入式系统"的定义。网上对嵌入式系统的中文定义实在是不好理解,比较官方的中文定义是:嵌
嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。SelectFromModel是一个元变压器,可与拟合后具有coef_或feature_importances_属性的任何估算器一起使用。如果相应的coef_或feature_importances_值低于提供的 threshold参数,则认为这些功能不重要并已删除 。除了通过数字指定阈值之外,还有一些
一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下5个窍门是每一个开发者在设计驱动程序时应该考虑的,下面就随我们一起来了解一下相关内容吧。 1.使用设计模式设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具
转载 2023-07-13 21:51:34
0阅读
1点赞
OpenGL ES(OpenGL for Embedded Systems) 是一种免费的跨平台3D图形 API接口,其适用于低功耗设备,可用于嵌入式设备和移动设备(包括手机、车载大屏 和嵌入式电器终端设备)上渲染高效的 2D 、 3D 图形。 其由OpenGL(Open Graphics Library)针对嵌入式设备裁剪而来,去除了OpenGL中许多不是必须冗余特性,比如:GL_QUADS(四
嵌入式WEB服务器常见的有:Lighttpd, Shttpd, mongoose, Thttpd, Boa, Mini_httpd, Appweb, Goahead LighttpdLibHttpd是一个开源轻量级嵌入式Web server,是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等
转载 10月前
229阅读
我是专科,读的是嵌入式技术,是的没错,计算机领域里最大的坑。 当初专业的时候,师兄就提醒过,千万不要碰单片机,那样的话会进一条很奇怪的路子。 我还是碰了,至今已经写了两年的C代码。坑越掉越大。 适逢毕业季,我的不少师兄都出来闯荡了,很多师兄开始说自己学校里学的远远不够。 虽然说是广东最好的大专,但始终是个专,在专里头开这样一个专业,两年半的时
很多人都讲嵌入式开发很难,能不能就你学习和工作经验与大家分享下嵌入式开发如何开始和深入?作为嵌入式研发工程师,你认为其应具备哪些知识结构和实战能力?做嵌入式开发必须具备良好的C语言功底,汇编虽然不是必须,但懂点更好。其次可以到网上找一个比较流行的MCU开发板,比如STM32做为学习开发板,参照示例代码,自己动手编译烧录跑程序,比如跑马灯的程序,深刻了解整个开发过程。接下来可以学习小型的实时操作系统
嵌入式嵌入式的标签多为:低配,偏硬件,底层,资源紧张,代码多以C语言,汇编为主,代码应用逻辑简单。但随着AIOT时代的到来,局面组件改变。芯片的性能资源逐渐提升,业务逻辑也逐渐变得复杂,相对于代码的效率而言,代码的复用可移植性要求越来越高,以获得更短的项目周期 和更高的可维护性。下面是AIOT时代嵌入式设备的常见的软件框架。设计模式设计模式的标签:高级语言 ,高端,架构等。在AIOT时代,设计模式
一、AMBA概述今天要介绍的三种嵌入式总线技术:APB、AHB、AXI,它们都属于ARMA片上总线协议。所以,在介绍这几种总线技术之前,有必要先了解一下ARMA片上总线协议是什么。AMBA (Advanced Microcontroller Bus Architecture),全称叫作高级微控制器总线架构,它是由ARM公司研发推出的高性能片上总线协议。它定义了高性能嵌入式微控制器的通信标准,可以将
转载 2023-07-19 16:14:31
661阅读
本周学习概要: 本周我们学习了有名管道和消息队列的传输和接收,并且在课上和课下实验楼中进行了程序的验证和操作。 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 套接字( socket ) : 套解口也
1. 嵌入式系统软件开发平台    嵌入式系统的软件开发方法采用的不是通用的开发方法,而是交叉开发方法。本小节主要介绍嵌入式系统软件开发的交叉编译环境的基本概念和特点,以及软件调试常用的几种方法。    1.交叉平台开发环境    嵌入式系统的软件开发采用交叉平台开发方法(Cross Platform Develop
SoC嵌入式软件架构设计之二:没有MMU的CPU实现虚拟内存管理的设计方法。这里要阐述Bank设计的一些原则。    Bank设计是为了实现不同一时候刻执行的Bank(代码块)执行在同一块内存上,所以在执行之前操作系统须要将已存在内存的代码/数据进行缓存处理,并载入将要执行的Bank到该内存上。为了实现这个目的,须要明白下面要点:     1.为了
  • 1
  • 2
  • 3
  • 4
  • 5