嵌入式编程:平台大小端存储差异解决办法(一)
关于大小端存储的问题,在嵌入式开发里这个早已不是什么新鲜事儿了。作为开发者都有着很清晰的认识,在此就嵌入式开发中的大小端问题,做个简单的分享总结。大端小端,是相对内存而言的。有关大小端的资料,互联网上一搜就一大堆的博文和百科知识点,这里就不再赘述。在工程项目中,需要处理大小端差异的,主要出现在数据处理的过程中,常见的有:1.数据包解析和组包2.数据收发和参数传递数据包解析和组包数据包解析和组包的过程,可以参考《嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议》该文中的“设计协议帧结构”部分,该部分内容讲到把uint16_t字段的数据使用2个uint8_t类型的数据表示,旨在数据传输时没有差异。但是,有些接口是别人设计好的,作为应用者你只能“顺从”地使用。在C语言里可以利用强制转换来实现对数据类型的转换,但是强转的结果依赖于当前平台大、小端情况的。如下的类型强制转换,将uint8_t类型buf中的数据流强制转为uint......阅读全文
AWorks编程:嵌入式C语言的内存管理(一)
很多工程师都知道,C/C++语言与其他语言不同,它需要开发者自己管理内存资源,动态内存使用不当,容易造成段错误或者内存泄漏,因此内存管理至关重要。本文将以C语言为例介绍动态内存管理的原理。C/C++语言与其他语言不同,它需要开发者自己管理内存资源。对于动态内存的使用不当容易造成段错误或者内存泄漏。尤
AWorks编程:嵌入式C语言的内存管理(二)
2、内存资源的申请与释放我们这里以常用的内存操作接口——malloc与free为例,介绍操作动态内存的细节。void* malloc(size)——申请一片大小为size字节的内存。参考下图,灰色部分是已经被使用的内存,空白部分则是可以被申请使用的内存。在申请内存的时候,系统会首先判断有没有足够大的
AWorks编程:嵌入式C语言的内存管理(三)
内存泄漏令开发者头痛的地方也正是这个原因,内存泄漏的问题往往无法在第一时间被发现!而对于不熟悉内存管理的开发者更是难以定位错误。对于动态内存的操作,需要时刻记住:当一块申请的内存不再使用的时候,必须及时释放。一个malloc操作需要对应一个free操作。4、内存对齐在很多的场合下,分配的内存不仅要满
AWorks编程:嵌入式C语言的内存管理(四)
当用户用完资源的时候,把申请的3k还回去,系统会从used link找到申请的内存,将链入free link以供下次分配,然后将空闲相邻的内存块合并成完整的一块:现在考虑这样的一种情况:假设用户要申请5k的内存块,系统能够提供吗?并不能。虽然空闲的内存块一共有9k(2k+4k+3k),但是9k的内存
嵌入式编程:平台大小端存储差异解决办法(一)
关于大小端存储的问题,在嵌入式开发里这个早已不是什么新鲜事儿了。作为开发者都有着很清晰的认识,在此就嵌入式开发中的大小端问题,做个简单的分享总结。大端小端,是相对内存而言的。有关大小端的资料,互联网上一搜就一大堆的博文和百科知识点,这里就不再赘述。在工程项目中,需要处理大小端差异的,主要出现在数据处
嵌入式编程:平台大小端存储差异解决办法(二)
大端模式的51平台下:小端模式的ARM平台下:
嵌入式编程:平台大小端存储差异解决办法(三)
对比结构体成员的值,uint16_t类型和uint32_t类型的成员值都相反:可见在强制转换的过程中,如果忽略了大小端问题,那么转换的结果将会和预期的不一致,要么导致程序处理异常而跑飞,要么导致内存溢出而系统崩了!数据收发数据收发,如果以嵌入式外设串行接口进行通信,收发大多是逐字节进行的,这
嵌入式编程:平台大小端存储差异解决办法(四)
常用处理差异办法关于差异的处理,前文提到的全部采用uint8_t类型进行设计,比较保险稳妥,但数据量大、项目需求复杂的时候,未必就能满足,所以还是需要正面应对这些硬性问题。这里整理出几个简单转换的过程。1. 多个uint8_t转uint16_t/uint32_t这个转换很容易可以实现,信手拈
电子所“嵌入式可编程逻辑阵列IP核”课题通过验收
由中国科学院电子学研究所牵头承担的核高基重大专项“嵌入式可编程逻辑阵列IP核”课题近日在北京顺利通过验收,标志着我国在研制具有自主知识产权的高性能大规模嵌入式可编程逻辑阵列IP核能力上的创新突破和显著提升,是国产可编程逻辑芯片和IP核在探索市场化和产业化道路上的重要里程碑,对我国
嵌入式光谱
德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动
嵌入式光谱
德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动
嵌入式光谱
德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动
可编程高温炉的编程曲线如何正确设置
可编程高温炉的推出,有效解决了普通高温炉存在的温度波动太大的难题,其智能化控制系统也保证了仪器的控温度,除此之外,可编程高温炉也免除了普通箱式电炉使用前繁琐的配置过程,控制系统采用LTDE技术可编程智能仪表。下面小编为大家介绍下如何设置高温电炉的编程曲线:1、接通电源,打开仪器后面的循环风机开关按↑
嵌入式光谱仪的应用
UV-VIS-NIR光谱技术已在PAT和移动光谱应用中使用了很多年,因为光谱学测量的快速、非接触及维护率低等特点,使得人们可利用光谱学深入了解生产过程中产品的状态。智能嵌入式光谱传感器系统(tecSaaS)更加的可靠和稳定,它避免了传统光谱测量系统中PC机采集、评估和处理光谱数据时可能会发生的问
浅析嵌入式系统低功耗设计
在嵌入式系统中,低功耗设计是在产品规划以及设计过程中必须要面对的问题。半导体芯片每18个月性能翻倍。但同时,电池的技术却跟不上半导体的步伐,同体积的电池10年容量才能翻一倍。嵌入式系统对于使用时间以及待机时间的要求也越来越高,这就需要在设计产品的时候充分考虑到整个系统的低功耗设计。功耗控制是一个系统
探索嵌入式应用框架(EAF)(一)
EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。Application Framework——应用框架,是一种软件框架,软件开发人员用应用框架作为标
探索嵌入式应用框架(EAF)(二)
M2M的应用框架鉴于 M2M 技术的特点, 系统设计者可能不得不从头开始构建整个 M2M 体系结构。其核心是, M2M 技术包括增加一个装置或设备的智能服务, 并将该设备与可以监控或控制该设备的后端基础设施连接起来。 为了实现这一目标, 一个 M2M 设备使用了两个基本元素: 与
干细胞编程参照
研究人员首先通过一系列体外实验,鉴定了19个转录因子。这些转录因子在人类胶质母细胞瘤干细胞中的表达水平,显著高于其他更为分化的肿瘤细胞。随后,研究人员对这些因子逐个进行测试,检测它们将已分化肿瘤细胞诱导回干细胞状态的能力。最终他们确定了四种关键的转录因子,POU3F2、SOX2、SALL2和OLIG
“细胞编程与重编程的表观遗传机制”项目评审结束
国家自然科学基金重大研究计划“细胞编程与重编程的表观遗传机制”2010年度项目评审会近日在北京举行,本次会议内容是重点项目答辩和培育项目复审。会议评审专家由13位组成,包括5位指导专家组成员和8位特邀专家。本重大研究计划管理工作组成员和生命科学部相关处和学科的负责人也参加了会议。 评审会之
嵌入式硬件通信接口协议IIC一:协议基础(三)
AT24C1024B存储芯片的时钟要求:综上所述,IIC总线接口,属于两线、多主多从、半双工通信接口协议。熟悉两根信号线的时序图,基本上对IIC的了解就差不多了。关于IIC接口的分层架构设计,敬请期待后续更新。★★★★★推荐文章《【嵌入式编程】函数返回类型设计》《【嵌入式编程】平台大小端存储差异解决
关于嵌入式闪存的一些错误观念(二)
嵌入式闪存支持EEPROM功能传统的EEPROM架构支持字节写操作,因而常常被需要频繁更新数据的应用程序所用。通常,嵌入式闪存是按一定规则排列的一组存储单元,又称为扇区。扇区需要在写入新数据前完全擦除。幸运的是,我们可以使用SRAM缓冲器在整个嵌入式闪存区的一小部分上模拟EEPROM功能,既
飞纳编程界面(PPI)
飞纳编程界面(PPI) 基于开放标准,PPI可以控制飞纳电镜的任何部分。移动台、导航相机、电镜控制等都可以通过PPI来实现。采购了PPI功能之后,您可以在网上下载一份包括丰富演示案例和所有命令列表的详细使用手册。此外,扩展版的FAQ和来自Phenom-World软件部门的邮件支持也随时在线待命,以
细胞的重编程概念
中文名称重编程英文名称reprogramming定 义已分化细胞的核基因组恢复其分化前的功能状态。应用学科遗传学(一级学科),发育遗传学(二级学科)
MATLAB的编程规范总结
好的编程习惯,可以提高编程效率,不仅可以使代码容易修改,也容易给别人看懂,便于交流。我们不仅要写出“给机器读懂的代码”,也写出“给人看得懂的代码”。 本文根据一些目前搜索到的文献和自己的一些使用心得,整理出这个文档,大家可以根据经验提出自己的心得,相互促进,共同提高。 1,命名规则 (1)变量
细胞重编程技术
细胞重编程介绍重编程体细胞重编程(somatic reprogramming)指的是分化的体细胞在特定的条件下被逆转后恢复到全能性状态,或者形成胚胎干细胞系,或者进一步发育成一个新的个体的过程。诱导体细胞重编程的方法有许多,如核移植、细胞融合、细胞提取物诱导、化学诱导以及分子调控诱导等。但到
AWorks编程——socket通信(一)
socket在计算机通信领域被称为“套接字”,是网络通信的一种方式,在AWorks系统中如何使用socket API建立服务器与客户端,进行数据通信呢?本文将详细为你介绍。概述要编写通过计算机网络通信的程序,首先要确定这些程序相互通信使用的协议,通常使用TCP或UDP协议族。TCP是面向连接的传输协
AWorks编程——socket通信(二)
程序清单3 回声客户端程序程序编写完成后,我们使用TCP上位机软件测试。打开TCP调试软件,如图3。创建服务器,如图4。最后启动服务器,如图5。图3 TCP调试工具图4 创建服务器图5 启动服务器以上步骤就绪后,在主程序中调用demo_tcp_client_entry()入口函数,编译、下载程序到开
AWorks编程——socket通信(三)
TCP服务器实例按照基本的套接字编程流程,建立服务器,我们只需要调用socket、bind、listen、accept、send、recv、closesocket函数即可,如程序清单4,首先使用socket函数创建TCP类型的套接字,然后调用bind函数绑定本地网卡的IP地址和端口号,使用liste
AWorks编程——socket通信(四)
客户端创建后,点击连接,如图11。图11 连接到服务器连接成功后,在发送区发送数据,接收区可以看到服务器回发的数据,如图12所示。此时在串口界面也可以看到服务器收到的数据,如图13。图12 客户端收发数据图13 服务器收到的数据出错调试如果程序运行后,没有成功建立连接,可按照以下步骤查看网络状态:首
细胞重编程研究新突破:非哺乳类动物重编程
将已分化的细胞重编程,令其恢复多能性是一项重要的科学突破,这一成果也因此荣获了2012年诺贝尔生理/医学奖——两位科学家因证明“成熟细胞能被重编程恢复多能性”站在的科学的最高领奖台上。不过到目前为止,这种多能性重编程应用主要还是限制在哺乳动物中。 近期一组研究人员在9月3日的eLife杂志