跳转到主要内容
第五届滴水湖中国RISC-V产业论坛专题
【填问卷 月月赢好礼】“芯英雄联盟”直播服务在线调查
CES 2026(国际消费类电子产品展览会)专题
以板载匠心,赋能 FPGA 创新,加速产品从 0 到 1
直播预约 | AI 智能体加速FPGA开发
难以置信!5微米,比红细胞还小!Mars ZX2让机械臂变得更精密、更紧凑、更易集成
编译器的工作过程

作者:阮一峰

源码要运行,必须先转成二进制的机器码。这是编译器的任务。

比如,下面这段源码(假定文件名叫做test.c)。

#include <stdio.h>int main(void){
fputs("Hello, world!\n", stdout);
return 0;}

要先用编译器处理一下,才能运行。

$ gcc test.c
$ ./a.out
Hello, world!

对于复杂的项目,编译过程还必须分成三步。

$ ./configure
$ make
$ make install

C语言编程程序的内存如何布局 ?

 <strong>一:C语言程序的存储区域</strong>

  由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。

  C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域:

  1、代码段(Code或Text)

  代码段由程序中执行的机器代码组成。在C语言中,程序语句进行编译后,形成机器代码。在执行程序的过程中,CPU的程序计数器指向代码段的每一条机器代码,并由处理器依次运行。

  2、只读数据段(RO data)

ARM64的启动过程之(二):创建启动阶段的页表

作者:linuxer

<strong>一、前言</strong>

本文主要描述了ARM64启动过程中,如何建立初始化阶段页表的过程。我们知道,从bootloader到kernel的时候,MMU是off的(顺带的负作用是无法打开data cache),为了提高性能,加快初始化速度,我们必须某个阶段(越早越好)打开MMU和cache,而在此之前,我们必须要设定好页表。

一个外国分析师眼中的中国半导体

作者:贝恩咨询

转载自:半导体行业观察(icbank)

半导体这种对技术、人才和经验有极高需求的产业,要发展起来也不可能是一朝一夕的,我们要看清楚前景是光明的,道路是曲折的,希望中国半导体人能够共勉。

在中国近年来在半导体领域的重大投入和中国庞大市场的双重影响下,中国半导体在全球扮演的的角色日益重要。国际社会上很多观察家在把中国看成一个机会的同时,也同时顾虑到中国半导体崛起带来的威胁。但有一点可以肯定的是,近年来中国半导体玩家频频露面知名国际会议,已经制造了相当程度的全球影响力。

自从中国宣布建立千亿的投资基金,挑战全球半导体霸主的地位。业界的巨头们都在思考并谨慎防御中国的半导体野心。

中国平衡车行业:内忧外患 如何过冬?

这两天,平衡车行业被一股浓浓的寒意笼罩。近日,上海、北京警方先后对平衡车等进行了集中整治,多款电动滑板车、平衡车被禁止上路。事实上,自美国对平衡车行业启动“337调查”后,中国的平衡车行业就处在一片“愁云惨雾”之中。

程序员必知的十大基础实用算法及其讲解

<strong> 1、快速排序算法</strong>

快速排序是由东尼•霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。

快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists)。

算法步骤:

(1)从数列中挑出一个元素,称为“基准”(pivot),

【视频】Proteus入门到精通12

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

这一套Proteus教学视频是由up主wangxinmingqq花时间录制的,内容很全,既适合初学者,又适合对proteus有一定基础的人。

如何形成一个良好的编程风格(二)

<strong> 3、标识符</strong>

a、变量的命名

方法一:采用匈牙利命名法。命名规则的主要思想是“在变量中加入前缀以增进人们对程序的理解”。

例如平时声明32位整型变量Length对应使用匈牙利命名法为unLength。现在列出经常用到的变量类型。

变量类型 示例

char cLength

unsigned char ucLength

short int sLength

【下载】AN0003 MM32F103 常见问题解答

<strong>1. 系统时钟</strong>

<strong>1.1 外部高速时钟接法</strong>

外部无源晶振电路如下图所示,晶振两脚接约 22pf 电容,并上 1M 反馈电阻。因芯片内部没有集成反
馈电阻,为保证 XTAL 起振,必须接 1M 欧姆电阻;

如何形成一个良好的编程风格(一)

编程的总则:编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。大多数程序员只是关注程序的可行性,而忽略了可读性,可移植性和健壮性,其实我个人认为,程序的可行性和健壮性与程序的可读性有很大的关系,能写出可读性很好的程序的程序员,他写的程序的可行性和健壮性必然不会差,也会有不错的可移植性。程序的可读性需要程序员有一个良好的编程风格。

好风格应该成为一种习惯。如果你在开始写代码时就关心风格问题,如果你花时间去审视和改进它,你将会逐渐养成一种好的编程习惯。一旦这种习惯变成自动的东西,你的潜意识就会帮你照料许多细节问题,甚至你在工作压力下写出的代码也会更好。

<strong>1、排版</strong>

【视频】Proteus入门到精通11

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

这一套Proteus教学视频是由up主wangxinmingqq花时间录制的,内容很全,既适合初学者,又适合对proteus有一定基础的人。

老外揭秘:原来黑客是这么破解MCU的

这篇文章是俄国人Sergei P.Skorobogatov就读英吉利剑桥大学之博士论文,讲解了各种MCU的攻防技术,堪称一部小百科全书。对于志在研究MCU防护的筒子,能给你很多参考思路:但对于想当黑客的人,我们对后果概不负责!

C非侵入式攻击不需要对元器件进行初始化。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。一旦成功,这种攻击很容易普及,并且重新进行攻击不 需要很大的开销。另外,使用这种攻击不会留下痕迹。因此,这被认为是对任意元器件的硬件安全最大的威胁。同时,通常需要很多时间和精力来寻找对特定元器件 的非侵入式攻击方法。这通常对元器件进行反向工程,包括反汇编软件和理解硬件版图。

对ARM异常(Exceptions)的理解

ARM支持7种异常。问题时发生了异常后ARM是如何响应的呢?下面一起来学习一下:

所有的系统引导程序前面中会有一段类似的代码,如下:

<center><img src="http://mm32.eetrend.com/files/2016-09/wen_zhang_/100002849-9339-8ecbff5…; alt=""></center>

【下载】AN0004 基于IAR开发MM32

本应用笔记主要介绍了IAR for ARM集成开发环境及调试工具的安装,及在 IAR环境下添加 MM32 MCU Device ,建立一个 MM32 的 IAR项目及编译下载调试。

<strong>1、IAR EWARM 集成开发环境介绍与安装</strong>

<strong>1.1 IAR EWARM 简介</strong>

嵌入式工程师眼中应该有的人工智能概念!

作者:何立民

“思考”与“行为”是人类智能的两种类型。“思考”是大脑独立的思维方式,“行为”是作用于客体的智力表现。

两种不同的智能类型决定了人工智能两种形式、两条道、两种工具、两个领域。人工智能源自图灵机模型,图灵机在实现了人工智能的实用化智力内核(微处理器)后,迅速分化成两种不同的智力内核(通用微处理器与嵌入式微控制器),以满足人工智能两个领域的全面需求。

<strong>人类智能的两种表现</strong>

单片机有前途还是嵌入式有前途,你想过这个问题吗?

其实抛出这个问题的是吴坚鸿,下面是他在某论坛中写下的东西:

“我在深圳一直搞单片机的开发,接的项目各种各样,不计其数。很多朋友问我学习单片机有前途还是嵌入式系统有前途,毫无疑问的,当然是单片机有前途。

嵌入式系统现在炒得很火,满街到处都是嵌入式系统的培训。遇到很多刚入门的朋友,开口闭口都是嵌入式系统。好像觉得嵌入式系统就是武林秘诀,谁掌握了谁就是武林盟主。现在,我愿意公开我的独家心得跟大家分享,看了之后有收获的朋友,也不要感激我,只要记得这个文章的原创是吴坚鸿就可以了。

好文:细谈I2C和SPI总线协议

作者:ce123

<strong>IICvs SPI</strong>

现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。

处在独特环境下的中国半导体业

中国半导体业处于一个独特的环境下,西方势力总是企图扼制中国半导体业的进步与发展,之前靠打与压的方法可能己不再是”最佳”方案,取而代之可能是形式上与中国的合作,共同发展。

如高通与中芯国际的28纳米制程;高通,IMEC,与中芯国际的14纳米制程研发;高通与贵州的服务器芯片合资公司;英特尔,清华与澜起的服务器芯片合作;AMD与天津海光合资,并授权使用x86处理器架构等。首先是应该表示欢迎,但也不要抱过高的期望,因为它们在什么时候都不会愿意培养自己的一个竞争对手呈现。

同样不要天真的认为”扼杀中国半导体业的大势己经改变?”。实质上它们的基点没有丝毫的动摇。只是由于中国是全球最大的IC市场,政府又愿意投资,以及自身不断的强大,从市场经济角度,从根本上谁也不会与money过不去。

We want you!2016灵动微电子校园招聘开始啦,招兵买马要的就是你!

各位小伙伴们,2016灵动微电子校园招聘要开始啦,加入我们,就趁现在!

<strong> 第一场:南京校园招聘会</strong>

2016年9月19下午: 南京邮电大学

2016年9月20上午:南京航空航天大学

2016年9月20下午: 河海大学

2016年9月21上午: 南京理工大学

2016年9月21下午: 东南大学

<strong> 具体岗位信息如下:</strong>

<strong>集成电路前端设计工程师</strong>

<strong>职位描述:</strong>

1、按照产品定义完成IP设计及系统设计;

使用Keil判断ARM的冷启动和热启动的方法

常把单片机系统的复位分为冷启动和热启动。所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位。复位后,RAM的内容都没有改变。在某些场合,必须区分出设备的重启是热重启还是冷重启。常用的方法是:确定某内存单位为标志位(如0x40003FF4~0x40003FF7 RAM单元),启动时首先读该内存单元的内容,如果它等于一个特定的值(例如为0xAA55AA55),就认为是热启动,否则就是冷启动。

根据以上的设计思路思路定义一个变量:

uint32 unStartFlag;

在程序启动时判断:

if(unStartFlag==0xAA55AA55)

{