嵌入式系统理解及相关知识100问

为何考软考中嵌入式系统设计师的人数寥寥以及备考策略 在软考丰富多样的科目体系中,嵌入式系统设计师的报考人数明显少于许多热门科目。这一现象背后蕴含着复杂且多维度的原因,深入剖析这些因素,不仅能让我们理解现状,还能为有意报考者提供参考。同时,制定合理的备考策略对于攻克这一具有挑战性的考试至关重要。 阅读详情

开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件组件。开发板一般由嵌入式系统开发者根据开发需求自己订制,也可由

用户自行研究设计。开发板是为初学者了解和学习系统的硬件和软件,同时部分开发板也提供的基础集成开发环境和软件源代码和硬件原理图等。常见的开发板有51、ARM、FPGA、DSP开发板。

这里我们先来说说ARM开发板:

ARM开发板,即以英国ARM(Advanced RISC Machines)公司的内核芯片作为CPU,同时附加其他外围功能的嵌入式开发板,用以评估内核芯片的功能和研发各科技类企业的产品。

ARM开发板根据ARM内核可以分为ARM7、ARM9、ARM11、 Cortex-M系列、Cortex-R系列、Cortex-A系列。其中Cortex-M3系列又可分为Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4;Cortex-R系列分为Cortex-R4、Cortex-R5、Cortex-R7;Cortex-A系列分为Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A50等,同样也就有了对应内核的Cortex-M0开发板、Cortex-A5开发板、Cortex-A8开发板、Cortex-A9开发板、Cortex-R4开发板等等。由于ARM公司只对外提供ARM内核,各大厂商在授权付费使用ARM内核的基础上研发生产各自的芯片,形成了嵌入式ARM CPU的大家庭,提供这些内核芯片的厂商有提供这些内核芯片的厂商有Freescale/NXP、TI、Atmel/Microchip、ST、Samsung等。

做ARM系列开发板知名的公司有保定飞淩、友善、天嵌、天漠、优龙、博创、扬创、seeed studio、精仪达盛科技、米尔科技、创龙等。

下面图例是飞淩公司出的OKT507开发板,具体资料见   www.forlinx.com

嵌入式之ARM开发板经典问答100问

第 1问:

Q:请问在初始化 CPU堆栈的时候一开始在执行mov r0, LR这句指令时处理器是什么模式?

A:复位后的模式,即管理模式.

第 2问:

Q:请教:MOV中的 8位图立即数,是怎么一回事 0xF0000001是怎么来的A:是循环右移,就是一个 0—255 之间的数左移或右移偶数位的来的,也就是这个数除以 4一直除, 直到在 0-255的范围内它是整数就说明是可以的!

A:8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是 0x1F循环右移4位,符合规范,所以是正确的.这样做是因为指令长度的限制,不可能把 32位立即数放在32位的指令中.移位偶数也是这个原因.可以看一看ARM体系结构(ADS自带的英文文档)的相关部分.

第 3问:

Q:请教:《ARM微控制器基础与实战》2.2.1节关于第 2个操作数的描述中有这么一段:

#inmed_8r常数表达式.该常数必须对应8位位图,即常熟是由一个 8位的常数循环移位偶数位得到.

合法常量:0x3FC,0,0xF0000000,200,0xF0000001.

非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.

常数表达式应用举例:

...

...

LDR R0,[R1],#-4 ;读取 R1 地址上的存储器单元内容,且 R1 = R1-4针对这一段,我的疑问:

1. 即常数是由一个 8位的常数循环移位偶数位得到,这句话如何理解2. 该常数必须对应 8位位图,既然是8位位图,那么取值为 0-255,怎么 0x3FC这种超出 255的数是合法常量呢3. 所举例子中,合法常量和非法常量是怎么区分的 如 0x3FC 合法,而 0x1FE却非法0xF0000000,0xF0000001都合法,而0xF0000010又变成了非法4. 对于汇编语句 LDR R0,[R1],#-4,是先将 R1的值减 4结果存入 R1,然后读取 R1所指单元的 值到 R0,还是先读取 R1到R0,然后再将 R1减 4结果存入R1

A:提示,任何常数都可用底数*2的 n次幂 来表示.

1. ARM结构中,只有 8bits 用来表示底数,因此底数必须是8位位图.

2. 8位位图循环之后得到常数,并非只能是8位.

3. 0xF0000010底数是 9位,不能表示.

4. LDR R0, [R1], #-4 是后索引,即先读,再减.

可以看一看 ARM 体系结构对相关寻址方式的说明.

第 4问:

Q:在程序移植的过程中,什么代码段处于什么样的模式,这可真是一个困扰人的大难题,有没有一种标志或办法能够识别"代码段处于什么样的模式"

A:读取 CPSR ,任何时候都是可以读.

第 5问:

Q:为什么保护现场时,总是保护 R0-R3,R12,为什么不保护R4-R11

A:请看一看"ARM-thumb 过程调用标准"这个文档.

第 6问:

Q:请问 mov R1,#0x00003DD0 错误:out of the range of operation是怎么回事情我就是想IODIR=0x00003dd0,汇编就是LDR R0,=IODIRMOV R1,#0x00003dd0STR R1,[R0]

编译时候说是超出操作范围

A:使用 ldr,mov的操作数为 8位位图数.

第 7问:

Q:"在ARM7TDMI(-S)处理器内部有 37个用户可见的寄存器:"问题:"用户可见"应该怎样理解 这 37个寄存器是否是 37个不同的物理寄存器,例如R8与 R8_fiq 应该是两个不同的物理寄存器吧。

A:用户可见是指用户可以通过程序操作的.R8与R8_fiq是两个不同的寄存器.

第 8问:

Q:USR模式,SVC模式,IRQ模式分别有哪些限制

A:对于外设操作限制与芯片设计有关.USR 模式不能设置CPSR 寄存器.

用户模式下无SPSR 寄存器,代码可以为 ARM,Thumb.

第 9问:

Q:请问"在初始化堆栈时就决定了工作模式"是什么意思 如何决定工作模式的

A:设置 CPSR 寄存器.

第 10问:

Q:请问:ARM汇编程序设计中所谓的"文字池"作何理解

A:可以理解为常量数组,文字池中保存的是常量,这些常量可以是正常的常量,也可以是地址.

第 11问:

Q:为什么在中断向量表中不直接 LDR PC,"异常地址".而是使用一个标号,然有再在后面使用DCD定义这个标号

A:因为 LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到 32MB 范围,而现在这样在 LDR PC, "xxxx"这条指令不远处用"xxxx"DCD定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现 4GB 全范围跳转.

第 12问:

Q:ARM7TDMI-S和 ARM7TDMI有何区别

A:ARM7TDMI-S是 ARM7TDMI的可综合(synthesizable)版本(软核).

对应用工程师来说,除非芯片生产厂商对 ARM7TDMI-S进行了裁减,否则ARM7TDMI-S与 ARM7TDMI没有太大的区别,其编程模型与ARM7TDMI 一致.

第 13问:

Q:DCD 伪指令的疑惑.

"StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4"这句话是什么意思 DCD 后面的程序标号或数字表达式是何意

A:它的内容是初始化递减堆栈的最高地址,看《ARM 微控制器基础与实战》2.3.2节.

第 14问:

Q:00254: Unimplemented RDI message是什么错误提示 我的设置连接都正常,是不是芯片烧了

A:是 JTAG的问题.可以先使用ISP 操作试试就知道了,如果能ISP,说明 LPC2104没有损坏,还能正常运行程序.

第 15问:

Q:请教:我在调试程序的时候在 AXD中出现这样的提示信息:

RDI Warning 00159:could not open specified device port.

我是根据配套教程的步骤设置的.

A:请按照光盘easyarm_drivereadme.txt 安装驱动程序.

第 16问:

Q:我用实验程序运行经常出现下列信息! 程序不能下载到目标板.

Warnning! interrupt vectors data is not correct!

Program you downloaded can not run freely!

A:1.仿真器配置一定要正确,即"EasyARM Configuration"设置窗口中的"FLASH"项中选择"Erase Flash when need";2.向量表累加和要为 0;3.可以先在RAM调试一个程序(运行),然后STOP,再使用 File->Load Image...加载要下载到 FLASH的调试文件.

第 17问:

Q:在 ADS中是否可以进行软件调试基于 UCOS-II的程序

A:ADS软件调试只能调试ARM的内核,不能调试外设.但是取消 PLL 锁定检测后,可以调试任务切换,最终到空闲任务上.开始移植时软件仿真是最好的工具.

第 18问:

Q:ARMulate软件是干什么的 2104不是用 EasyJTAG.dll来仿真吗?

A:软件仿真只能仿真 ARM 核.

第 19问:

Q:有关 LPC2106.INC的问题.我无法在 project引用 lpc2106.inc 文件,只能引用 lpc2106.h文件, 这是什么原因 且当我的主程序用汇编编写时,不能引用 lpc2106.h,用lpc2106.inc 则无法加入project,请问汇编器应如何设置

A:不用加 2106.inc只要该文件在你的工程文件夹中,就可以直接在汇编程序的开始处加6"include 2106.inc".

注意:该文件是汇编文件定义的头文件,定义内部寄存器.

第 20问:

Q:入口点是什么意思 我在使用 LPC2106上移植 UCOS-II,每次MAKE时总是提示我Image does not have an entry point,可是我是把光盘的vetctors.s 复制过来的,而且仔细看了看,已经声明了 ENTERY,这是怎么回事

A:需要在ADS 中设置入口.

第 21问:

Q:请教:如何定义不被初始化变量A:让编译器不知道有这个内存地址即可.

A:如用分散加载文件分配 RAM故意预留一部分 RAM 不分配,用它来存您不需要初始化的东西.或者不调用编译器提供的启动代码,不过这样可能编程会麻烦一些.

第 22问:

Q:我直接通过 JTAG 口下载 EasyArm板带的 Ext1_test程序到ARM中,出现中断向量的告警:

interrupt vector is not correct arm is not running freely.

果然复位后芯片不能运行.但是我用串口下载后芯片能正常工作,中断也行的.

并且我用 JTAG 仿真的话,芯片能正常工作,中断也行的,唯独 JTAG口下载不行.

不知道是什么原因?

A:仿真器配置中要设置 Erase Flash when need.也可以这样试试:

1.可以先打开一个工程在 RAM中调试运行;2.stop程序;3.使用File->Load Image…重新加载Ext1_test 生成的*.axf 文件.

第 24问:

Q:我在仿真时遇到这样的提示:

Error, Flash is protected by user configation!

怎么写到 flash 里面呢?

A:看配套《ARM微控制器基础与实战》附录一.

第 25问:

Q:我在移植实验中想到了两个问题,如下:

1. Debug和 Release 以及DebugR

el有什么不同,为什么在作 2104移植实验时,要用 Release2.在 Release 中为什么要将 RW Base设置为 0x40000040 我将其设置为 0x40003000,为什么不能工作

A:都只是一个问题,内存空间的使用,因为跑OS要比较大的内存空间,所以要腾出点地方.

第 26问:

Q:请问没有MMU的 ARM 芯片是否支持使用 malloc()函数动态分配内存

A:是否支持 malloc()函数与芯片没有多大关系,主要与编译器有关.

Q:再问:如果没有操作系统支持呢

A:也支持.

第 27问:

Q:在 I2C 实验程序中,我想查看数据缓冲区 DataBuf的值,怎么查看

A:watch 窗口或鼠标停留在要查看的变量名上.

Q:我查询的是写入 DataBuf缓冲区的值,鼠标在上面根本就不会出现他的值,即使在 watch中加入,结果也是"name not found".

A:变量被优化,调试时可以把该变量定义为全局变量查看.

第 28问:

Q:仿真软件和 2104开发板连接不上DBE Warning 00041:

!An unspecified Debug Toolbox call failed电源和开发板都连好,错误和没接开发板一样,驱动也安装了,安装时按确定键时,软件很长时间才有如上反应,请帮忙

A:1.并口是否正常2.在其它操作系统(如 98)下或其它台式 PC下试试.

第 29问:

Q:如何生成 32位 hex 文件8我在Release Setting->ARM fromELF->Output Format 中设置为Intel 32bit HEX,可是好像没有生成 hex 文件

A:试试这种方法:

Target-->Target Setting-->Post Link中选择"ARM fromELF"加上你上面设的应该不成问题.

第 30问:

Q:请问关于 settings中 r0 base rw base 的意思

A:ro:read only,rw:read and write.

第 31问:

Q:编译成功后的信息第一行,code,R0 data,RW data,ZI data,debug分别代表什么

A:R0 只读段,即程序代码空间;RW 可读/写段,即数据变量空间;ZI 清零变量段,即需要清零初始化的数据变量空间.

第 32问:

Q:如何在 ADS里面看任务执行的一些情况 比如堆栈.

A:多任务环境下的堆栈,内存等信息需要调试软件的支持才可以实现.

ucos 下有一个统计功能的模块可以间接实现部分功能.

第 33问:

Q:请问向 flash烧数据时出现:exceeds flash limitation 请予赐教!

A:要写入的 flash地址超过了范围.如果不是代码太大的问题,可以检查 scf文件是否正确.

第 34问:

Q:在 LPC2214之类的芯片中如何实现数组的绝对地址定位,比如 51的_at_的用法.

A:*((char*)0x40000300)类似访问Q:谢谢,但这样做就无须定义数组变量,访问也不便,还有高招吗A:可以使用分散加载.

第 35问:

Q:请问 ADS编译错误"L6221E:Execution region ER_RO overlays with Execution regionER_ZI" 该如何解决?

A:请用我们网站上的工程模板试一试,最大的可能是因为你的RELEASE或者 DEBUG选项里面没有正确设置,按照参考《ARM 微控制器基础与实战》上面的设置,是不会有这个问题的.

第 36问:

Q:请教一下:将程序写入flash,再用从JTAG方式调试写入之后再复位程序没什么反映.

看了很多以前的帖子,说memmap寄存器要为 1,我用的是一个很简单的控制 led 的例子,改动了参数之后写入 flash的.在这个程序的 vectors 中找不到关于 memmap寄存器操作 的部分啊,这是怎么回事,该怎么办呢?

A:《ARM 微控制器基础与实战》上附录有"常见问题",列举了几点程序写到FLASH不能运行的原因. memmap操作可以在 target.c 中的TargetResetInit()函数内添加.

第 37问:

Q:HEX文件.EASY2100配套《ARM微控制器基础与实战》上讲:把项目编译成HEX文件,我不会呀,咋办

A:Target-〉target settings设置Post-linker 并且设置 Linker-〉fromELF.

Q:再问:我用的是光盘里的例子,打开工程项目里是DebugInARM.DebugInFlash.

RelInFlash.不是《ARM微控制器基础与实战》上的DebugRel呀,我都照《ARM 微控制器基础与实战》上设置的,可用ISP 下载,提示无法找到HEX 文件.

A:光盘上的例子是用专用工程模板建立,已经设置好参数,与默认模板不同.

第 38问:

Q:EasyARM2100开发板如何通过 JTAG 接口下载到 Flash我在用 EasyARM2100开发板时 JTAG 接口不能进行 Flash 中的调试(DebugInFlash),但是可以在RAM中调试(DebugInRAM),且通过ISP 编程可以写入 Flash.

通过 JTAG 接口进行 DebugInFlash 调试时,总是出现如下提示:

Flash Sector 0 write failed!

Warnning interrupt vectors data is not correct!

Program you downloaded can not run freely!

请问是什么原因 我该如何办?

A:仿真器设置选项有一个允许擦除 FLASH 的选项,选择它.

第 39问:

Q:我发现程序在 RAM 调试时(RO=0X40000000) OK,但是 JTAG下载到 FLASH(RO=0X00000000),显示如下:

The session file 'c:Documents and Settingsjandefault-1-2-0-0.ses'

could not be loaded.

A:这是 ADS自身的问题,请不要通过IDE运行AXD,而是通过开始菜单运行,然后 Load调试文件调试.

第 40问:

Q:我有几个问题想问问大家.

调试主机负责对 ARM 源程序进行编译链接,最好用什么样的高级语言对 ARM源程序进行编译链接 使用调试程序(如 AXD)进行 JTAG调试,AXD是什么调试程序,是否是类似什么软件之类的 到哪能下载 AXD的调试程序呢 怎么样进行 AXD 程序进行 JTAG 调试 如何通过 JTAG 仿真器发送到目标机上呢对于单片机的调试,都用到了什么软件都个有什么作用呢?

A:可以使用 ADS1.2,Keil C也支持.AXD是 ADS 的一个组件.

您可以在本公司网站下载 EasyARM2100开发套件快速入门看一看.

第 41问:

Q:EasyARM2100AXD调试时出错,故障现象:

按照光盘上的方法设置好 ADS1.2后打开光盘上的 expamplesgpiocLedDisp的工程文件(从光盘上拷贝到硬盘,已去处只读属性).

编译通过后,按Debug 按键运行调试,进入AXD.按 Go按键,EasyARM没有反应.再按Stop按键.

AXD弹出两个确认框窗口:

"No disassembly could be read at the requested address".

如果进入AXD 直接按Step 按键,也是会弹出同样的两个确认框.

软件是光盘上的,没有经过任何改动.光盘上的程序试过 4,5个都是这种情况.

AXD的设置是按照光盘上的说明设置的.

EasyARM上的 JP8 是断开的.ADS在出现这种问题后重新安装过,故障依旧.

出现这个问题前,可以调试.只是单步的时候感觉比较慢.差不多 1-2秒钟才能单步一次.

A:原因找到了,是芯片被加密了,无法写入新的程序,用 FLASH ISP清除后解决.

加密后 JTAG完全不能控制芯片,否则可能被解密.

第 44问:

Q:请问,我的 2104板子,通过 EasyJTAG 仿真时,在AXD上没有文件,而且出现这样"Error, Flash is protected by user configation!"的提示,这是怎么回事啊 在 AXD 应该打开什么类型的文件啊 谢谢啦!!!!

A:在仿真器的配置窗口设置仿真器允许擦除 FALSH.

AXD->Options->configure target->configure->erase……

第 45问:

Q:关于 arm 汇编语言跳转指令的特殊用法.有如下两条跳转指令:

beq lablefbeq lableb其中 lable 为某段程序的标号,beq lablef 表示向前跳转到与当前指令最接近的标号lable 处执行,而 beq lableb表示向后跳转到与当前指令最接近的标号 lable 处执行.

在 arm汇编中有定义这样的用法吗?

A:没有.

第 46问:

Q:我想详细的了解一下 ADS开发工具中的 stack.s ,heap.s和 startup.s中代码的含义,各位高手推荐本书或给解释一下

A:开发套件用户指南的第 3.1.3节有说明.

stack.s 定义了系统模式堆栈的起始地址.

heap.s 为初始化库函数的堆,是按 ADS 的编译器要求编写的.

startup.s 向量表及初始化代码,是根据 CPU来编写的.

第 47问:

Q:我不知道所选择的C 文件到底是用 ARM 还是THUMB 编译的,请大侠指点!

A:看配套《ARM微控制器基础与实战》7.1,7.2,7.3节.

第 48问:

Q:我重新建立了一个工程,没有用模板,TEST.C 程序在编译的时候提示OS_EVENT 没有申明,但是我看了代码,TEST.C 中包含了CONFIG_EX.H,而 congif_ex.h中又包含了include_ex.h, include_ex.h,这两个头文件又包 含了 ucos_ii.h,而OS_EVENT 是在ucos_ii.h 中申明的,不知道为什么会出现这种错误,能不能给我一个比较合理的目录结构

A:请参考我们光盘的目录结构.最好使用我们的工程模板.

第 49问:

Q:请问,我现在做 2114的产品开发.出现以下问题,特向您请教! 问题:

我们开发的产品要采样,采用周期固定.于是我们采用timer0进行时钟触发,利用触发中断程序 每隔 10毫秒采样一次并显示波形.这都能很好的进行.但是在中断程序里面对几个全局变量赋值, 跳出中断后却不能使用该全局变量.很是头疼!请赐教!!

14框架如下:

uint8 a; //全局变量void __irq funtimer0(){...

a=0; //在中断函数里面对全局变量赋值...

}

void fun1(){uint8 i;i=0;.......

i=a; // 出错位置,在调试过程中运行到当前位置,鼠标移动到变量a 上// 显示数值是 0,但是不能传给 i,i的值不会随该命令改变.

...... }

因此,我在中断函数中采集到的数据放到全局数组中.采集完成关中断后在用户模式下的程序中来处理该数组,但是该数组中的数据也不能使用!全局数组变量占 1000个字节,IRQ堆栈长度是 256.

A:全局变量用volatile 声明.

第 50问:

Q:在 AXD 里打开 Debuger Internals,在 Variable Name里为什么没有 PINSEL2,ADDR,ADCR等寄存器 要在哪里设置?

A:有些片内外设寄存器是不能读出,《ARM 微控制器基础与实战》上的P33页有说明及处理方法(在Memory窗口写入相应寄存器地址).

第 51问:

Q:请问不连 easyArm板可不可以直接软件调试程序我是指如果想直接调软件部分,能不能在 ads或 axd里直接调试

A:这和板子没关系啊,你直接选 ARMulate 不就行了,注意把等待 PLL配置完那条语句屏蔽就可以啦!

第 52问:

Q:AXD 里面出现 "RDI Warning 00159: Could not open specified device port"谁能告诉我这个是问题啊我一直搞不懂啊,全部是按照《ARM 微控制器基础与实战》第 4章上配的图做的啊,但是就是不能仿真啊.

A:请先按照光盘的 easyarm_drivereadme.txt 安装驱动程序.

第 53问:

Q:1.在《ARM微控制器基础与实战》的 2.6.3节有说到"浮点数寄存器(F0-F7...)",2104是否具有这些寄存器2.如果 EasyArm不支持浮点运算,而我的程序需要用到浮点运算,请问可以实现吗

A:没有.

第 54问:

Q:EASYARM2104的例子程序怎么都是调用C 写的程序,汇编那个怎么没用的啊?

A:按如下步骤进行处理:

1. 在

项目管理窗口中删除原来的所有文件;2.在项目管理窗口中增加汇编文件*.S; 3.编译链接,调试.

第 55问:

Q:请问版主:在AXD 调试软件中,我单步运行到一定时候,我想让自己编的软件从复位处重新运行, 在 AXD 软件中,EXECUTE栏目中有单步,连续,运行到光标处等功能,但无复位功能,如果要实现此功能,如何操作?

A:我也没有发现,目前只能用重新装载的操作实现.

第 56问:

Q:在 AXD 调试中,通过从jtag 接口,连接上 lpc2106,出现如下信息:

TKSimulator for ADS, V1.2, 2003/08Software Supplied by: ZLGMCUARM7TDMI-S, Little Endian在从file|load imgage...文件,出现两种情况:

1.正常,完全能调试;2.出现问题,如下:

RDI Warning 00254: Unimplemented RDI message请问,这是错在哪里 如何解决 谢谢!

A:可能是电源或其他接插件接触不良引起.

第 57问:

Q:请教几个问题:

1.移植中底层接口里的__swi关键字在 SDT 中能用吗2.为什么在勘误文档中时钟节拍服务子程序里去掉了开中断及关中断的宏3.时钟节拍中断的优先级应该设为最高吗?

A:1.不知,请自己看一看软件自带文档.

2.因为中断服务程序中肯定是关中断的.

3.不必.

第 58问:

Q:arm汇编中的中括号是什么意思 比如下面的例子中括号是什么作用呀[ PLLONSTARTldr r0,=PLLCONldr r1,=((0xe8<<12)+(0x4<<4)+0x2)str r1,[r0]

]

A:等效于: IF PLLONSTARTldr r0,=PLLCONldr r1,=((0xe8<<12)+(0x4<上电->启动AXD.现象:数码管能显示不断变化的数字 0--F,但是 AXD的连接失败,提示"DBE Warning 00041: ....".

重复试了几遍,现象相同.

请教原因以及对策.

A:刚才把我机器的Win2K系统的用户属性从"PowerUser"修改为"Administrator"就没问题了.可能是ADS/AXD安装的时候用了Administrator权限,在"PowerUser"下工作有问题吧.

如果哪位老兄有类似问题,不妨试一下这个方法.

第 59问:

Q:在Init.s 中有这样一段:

ResetBL InitStack ;初始化堆栈BL TargetResetInit ;目标板基本初始化B __main ;跳转到c 语言入口谁知道__main()函数的具体内容假如我不需要调用库函数的话,是否可以改为 B main

A:看调试是汇编代码里有__main(),组成成分与一些链接选项有关.

可以.但是全局变量初始化不了.

第 60问:

Q:我在C 中嵌入这样一条语句__asm{MRS R4,CPSR;STMFD SP!,{R4};ORR R4,R4,0x80;MSR CPSR_cxsf,R4}

会出新报错"illegal write to sp"版主和各位大侠有什么办法解决阿

A:嵌入汇编不能使用 SP.

第 61问:

Q:请问 ADS如下的编译错误是什么意思L6221E:Execution region ER_RO overlays with Execution region ER_ZIA:程序段内存分配可能有问题,RO(只读),ZI(0初始化)第 70问:

Q:在 axd 中有没有运行程序的时间计算器 keil中就有那样的东西.

A:有的,不过不是时间而是执行周期,可以换算成时间.在debugger internals 中,具体可以参考帮助文档.

第 62问:

Q:我最初的 init.s中没有加入 heap的分配和__user_initial_stackheap 函数,结果程序跳到SWI中死循环.我把他们加入后就好了.或者不加入他们,把 B __main改为B main也可以.请问何解 另外,就算目标板会陷入死循环,但是用软件仿真却可以正常运行.何解

A:堆的位置没有分配到有效的 RAM中.

第 63问:

Q:在 ARM汇编语言中,对立即数的有要求,我记得原来没有这样一说了.现在反而糊涂了,用立即数时候,很小心很忌讳,不回象51下随心所欲的使用了,有对立即数熟悉的朋友站出来给大家释疑.

A:如使用"非法数据可以使用 lrd送到寄存器"的方法.

首先在存储器中定义一个常量,再 ldr进去,编译器是这样弄的.可以看下面语句反汇编的区别;int z=0x101;int z=0Xff;18

第 65问:

Q:既然 option 页中的Image entry Point 填入的是调试入口地址,那么在实际的程序运行当中它是不会 覆盖代码中的 ENTRY入口声明的,对吗 仅仅是为了调试的方便.

A:Image entry Point 优先.其实代码中的 ENTRY是为了确保代码不被优化掉.

第 66问:

Q:我想使用标准C 语言的库函数,比如 memset 在 string.h中有定义,可是我直接包含#include , 但是编译没错误,运行确有错误,应当怎么设置

A:请使用最新的工程模板.

第 67问:

Q:软件中断是不是必须由 SWI 指令触发

A:可以直接用你定义成软中断的函数名啊.比如:

19__SWI(0x12) void myswi(void); // 声明函数__asm // 调用方式 1{swi 0x12}

myswi(); // 调用方式 2

第 68问:

Q:《ARM微控制器基础与实战》程序清单 6.9的程序是在哪里被调用的_user_initial_stackheapLDR r0,=bottom_of_heapMOV pc,lr

A:__main.千万别删哟, 否则出大事的.

第 69问:

Q:"LDR R0, =PINSEL0" 中"="是什么意思 这语句是取地址还是取地址中的内容呢

A:这是 LDR 伪指令,可用来加载 32位立即数或地址,LDR R0,=PINSEL0是将 PINSEL0的地址加载到R0中.

第 70问:

Q:我不明白"SWI 0"和"SWI 0X123456"这两条指令中的 0和 0X123456中有何用.

有没有应用 SWI 的具体例子让我看看

A:那是特定的中断入口地址,见 ADS_DeveloperGuide_D.pdf下的swi.

第 71问:

Q:SWI的功能表吗?

A:SWI的功能表由 swi异常服务程序决定.很多时候由编程者自己决定.

第 72问:

Q:请问:我在实验您的原代码进行ucos 移植时用的是例 1,但是在按照图 7.17设置处理器的仿真器模式时 enable comms channel view 和 semihostin 项为不可激活状态.为什么,能否给一点提示?

A:在一些仿真器上使能了它们会影响swi异常处理程序.

第 73问:

Q:请问"Unimplemented RDI message"这个出错提示是什么意思啊20还有,有的时候当我用 axd load一个.axf 文件时,常常 loading 的没完没了,这是怎么回事啊?

A:Unimplemented RDI message:为命令操作失败,需要重新连接.

下载不结束为出现不正常现象,请重新连接并下载.如果每次都出现该现象请联系我们的技术支持.

第 74问:

Q:各位高手好,我是 ARM初学者我在程序调试中"LDR PC,[PC,R2]"命令执行后PC 为什么=0x0000000c, 在这条命令执行前 PC+R2地址上的值是 0x0000000c 吗?

A:要使用软件仿真.0x0000000C 是预取中止了.

第 75问:

Q:软中断 SWI作底层接口的问题.以下函数为啥要通过软中断调用,可以直接调用吗OS_TASK_SW(),_OSStartHighTdy(),OS_ENTER_CRITICAL),OS_EXIT_CRITICAL(),

A:在用户模式或 Thumb 状态不能直接调用.

第 76问:

Q:ARM的一条指令是 32bit长, 但有时一个立即数也是 32bit, 这是如何解释的

A:指令中使用的立即数需要时 8位数移位获得,并非所有数都可以.

第 77问:

Q:请教:全局变量的值在复位(不断电)后会不会自动清零 (用光盘自带的启动代码)

A:在C语言中一般会会初始化0或用户指定的值,但这不是硬件自动的.

第 78问:

Q:the setting files for *.mcp is locked!是什么问题?

A:文件属性只读.

第 79问:

Q:请问,关于printf() 在 ads 中怎么用不了 谢谢!

A:请用我们我们网站上下载 2104的工程模板,它解决了这个问题.

即使这样,也不能真正使用 prinf.您还需要自己编写一些底层函数才能使用,详细参考 ads 自带的 ADS_CompilerGuide_D.pdf.

第 81问:

Q:请问在 TargetInit()中函数开始会执行 srand((INT32U)TargetInit),它是做什么用的

A:ex1用它来产生随机数种子的.

第 82问:

Q:请问:vectors.s中"DCD 0xb9205f80" 的 0xb9205f80在实际运用中需要改动吗?

A:不需要更改,除非改动了向量表中的指令代码.

第 83问:

Q:请问,为什么 queue 数据队列,《ARM微控制器基础与实战》上给画成了环形

A:因为头跟尾的指针指向一个地址,队列逻辑上是环状的.

第 84问:

Q:有没有人成功的把一个数据定义到程序空间里 各种方法我都试了,是不是有什么编译开关

A:使用 const 修饰,定义变量时带初始化值,要定义为全局的变量.

第 85问:

Q:ads 里没有 CODE关键词,怎样使定义的字符串数组不占用RAM空间22

A:const unsigned char string[]

第 86问:

Q:在例程中TIME_test 中的 TIMEOUT 当写入时提示:

Warnning! interrupt vectors data is not correct!

Program you downloaded can not run freely!

我不知怎样改设置,哪位提醒一下

A:中断向量表的校验和不为 0,用AXD看 0地址的数据(32位方式),自己加一下.注意把 高于 32位的部分去掉.

第 87问:

Q:请教各位:我做 TIMEOUT 实验(2104板),Make 通过,Debug时出现了如下错误提示:

Warnning! interrupt vectors data is not correct!

Program you downloaded can not run freely!

设置 Link:ARM Linkr0 base:0x00000000rw base:0x40003000image entry point:0x00000000 其它的没变!!

而我使用ISP完全可以下载而且可以运行!这可以说是设置问题,但是我实在找不到!

怎么办

A:请看一看配套《ARM 微控制器基础与实战》附录 1,ISP软件可能对它进行了处理,而 JTAG没有特殊处理

第 88问:

Q:*(volatile unsigned int *)是什么意思 例如*(volatile unsigned int *)addr 具体是什么意思

A:分开来看,(volatile unsigned int *)就是定义一个可变的无符号整形指针,前面的那个*就是取起内容.

第 89问:

Q:如何理解#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))

A:宏定义,参考C语言的书籍.

(volatile unsigned long *) 0xFFFFF000 将 0xFFFFF000强行转换为指针,然后 *(指针) 即可对此地址进行访问.

第 90问:

Q:在异常处理向量表的设置中,为什么不直接将异常向量的入口地址写入 PC 中呢,为什么非要用什么 DCD 这些伪指令,到底有什么用啊

A:为了保证任何时候其累加和为零,不然改一次程序就要计算一次。

第 92问:

Q:请教:如何修改 ADS 的启动代码,从__main到 main,按道理应该有一个文件,修改这个小文件, 就可以修改 启动代码.

A:__main是ADS 运行库,最好不要修改,要是不使用库就不要用 main()函数,起个别的名字.直接跳转过去就行了.

详见:《ARM体系结构与编程》P328.

第 93问:

Q:我在 JTAG仿真时出现的对话框,提示:

Warnning! interrupt vectors data is not correct!

Program you downloaded can not run freely!

A:参见《ARM 微控制器基础与实战》附录一第一个问题的第二部分,选择源代码的启动代码文件夹下的vectors.s,并参照《ARM微控制器基础与实战》图 7.11设置.

第 94问:

Q:初始化代码中分配堆栈的问题MSR CPSR_c, #0xd3 ;进入特定的处理器模式LDR SP, StackSvc ;给当前处理器模式的堆栈指针赋值,这只是一个值而已,;他在接下去的DCD语句赋值SvcStackSpace SPACE SVC_STACK_LEGTH * 4这个语句开辟一个SVC_STACK_LEGTH * 4大小的内存,SvcStackSpace是这块内存的标号,我想应该就是内存的首地址,这样应该好理解了.

StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4这个语句就是把这个首地址加上堆栈大小值.

A:计算出堆栈指针来,我想这个堆栈是向下生长的,所以 SP赋值的是堆栈地址最高的那个.

第 95问:

Q:请问启动代码中这句是什么意思24__user_initial_stackheapLDR r0,=bottom_of_heapMOV pc,lr;/* 分配堆空间 */AREA Myheap, DATA, NOINIT, ALIGN=2 bottom_of_heap SPACE 256 ;库函数的堆空间我的问题是:

1. 这

个函数在哪里被调用2.赋值给 r0以后就完事了 r0起什么作用

A:堆和栈的分配函数,由ADS提供的初始化代码调用,具体参考配套《ARM微控制器基础与实战》的相关部分.

第 96问:

Q:2104的启动代码是否适用 2124呢网站上下载的那个 easyarm2104工程模版里面写着 arm executable imag for lpc21**,是否说也适用 2124呢 如果不行,哪些地方需要修改 希望能够指点一下!

A:您可以下载 2100的工程模板.

第 97问:

Q:我在用 ARM的IAP功能,要把已经烧到 flash 中的数据写到RAM中,我是这么写的:

uint32 *q,data;q = 0x00006000;data = *q;这是要读的 flash的起始地址,但是第二句编译出错,我想应该是C 编译器不许给指针直接赋值, 我用汇编解决了这个简单的问题,但是怎么用C来解决呢

A:q = (uint32 *)0x00006000;

第 98问:

Q:问一个有关汇编的基础问题.

例程: ANDS R1,R1,#0x0400BEQ WAITOK请问 ANDS 是如何影响标志位的,而BEQ 判断的是那两个操作数相等时执行

A:R1&0x0400 => R1,若结果为 0(即R1为 0),则标志位 Z=1.

当 Z=1时,BEQ WAITOK有效执行.

第 99问:

Q:请教:在ADS中怎么给某个变量确定固定物理地址就是类似KEIL中的 XDATA xxx _AT_ 0x4456 的功能.

A:使用分散加载机制,mem_c.scf等就是例子.

第 100问:

Q:哪里有介绍 ARM的C语言编程的

A:其实大多数嵌入式系统的C语言都差不多,可找一本写嵌入式C 语言的书即可.

第 101问:

Q:请问在系统复位后首先执行的是否为 Boot Block的中断向量然后由 boot block里面的程序决定是执行用户程序还是ISP程序.

那么这时启动的 boot block里的中断向量表和用户程序里的中断向量表是如何在 flash里安排的在《ARM 微控制器基础与实战》上看到的是复位后boot扇区的最低 64字节出现在0x00000000区域,那用户的中断向量表应该在哪个区域产品中一般为 0x00000000,在开发板中重启后实际为 boot block的中断向量地址,对吗

A:看一看 3.3.6节.产品中一般为物理0地址处.

第 102问:

Q:《ARM微控制器基础与实战》上有一段程序:

uint32 i;i = VICIRQStatus;i = IOSET;请问:为何先要读取VICIRQStatus 的值,才能读IOSET 的值

A:读出 VICIRQStatus只是为了方便观察当前VICIRQStatus的值,没其它用途.

第 103问:

Q:请问处理器在什么情况下处于用户模式 多谢!

A:需要你去设置 CPSR 寄存器.

用户程序前台程序一般在用户模式/系统模式下运行.

第 104问:

Q:在 EINT1_LED.S中的倒数第二行有一个单独的B 指令,它是什么含义 多谢!

A:是"B .",跳转到当前地址,即死循环,与以下代码等效:

HALT B HALT

第 105问:

Q:模板里到底有些什么

A:起动代码,相关编译链接设置.

起动代码是用来初始化系统的程序,如 Startup.s,target.c,stack.s等等.

第 106问:

Q:今天试用了工程模板.使用了ARM Executable Image for lpc21xx建了个项目,看了下启动文件与原来的不同了,用了个《ARM微控制器基础与实战》上的例程来作试验,用的是 time0定时中断来亮灯的程序,用的例程的TargetInit()和 int main(void);修改了用户堆栈和bottom_of_heap的长度,程序能运行,但不能产生中断,time0和VIC初始化的是正确的,是什么原因用工程模板建立的项目文件夹的 src中多了几个文件,其中的mem_a.scf,mem_b.scf,mem_c.scf,怎样才能导入到项目中来 谢谢!

Trustzone/TEE/安全 面试100问-目录 Trustzone/tee/安全面试100问 阅读详情

相关推荐

高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)

Camx 刚接触的时候对于这个xml 一脸懵逼,实际上和mm-camera差不多就是以xml node节点的方式标准化了driver相关的code,exposure 和 gain的逻辑实现还是在同级目录的cpp中,并且将 xml 的解析工作放在了 out/target/<product>/gen/STATIC_LIBERARIES/libcamxgenerated_intermediates/generated/ 中主要是包含了: g_chromatix : tuning 相关xml的解析co

shangbolei的博客 1万+

ARM中的合法常量和非法常量

ARM微处理器中的常量 学习ARM微处理器中的常量时,一直很懵懂,网上查了一下,终于弄明白,记录下来先。 书上的原话是: “常量是一个8位的常数经循环右移偶数位(0、2、4、8、…、26、28、30)得到。ARM指令时固定的32位指令编码,不可能直接用32位表示立即数,采用上述间接方式表示的立即数在指令编码中需要12位(其中8位表示常数,4位表示循环右移)。这样一来,不是每一个32位常数

wenjing3009的专栏 6284

旋转因子量化仿真

在单bit接收机中,通过量化FFT核函数来简化计算,将复数坐标中旋转因子单位圆上的点近似到正方形四个边上,就能够用累加实现复数乘法,从而避免使用DSP乘法器。通过仿真查看不同阶的核函数简化效果。

CyberInversion的博客 3103

嵌入式系统设计 (考试题+答案)

第1章 嵌入式系统概述 嵌入式系统的概念是什么?(教材P11-1) 用于控制、监视或者辅助操作机器和设备的装置 嵌入式系统的特点是什么?(教材P11-2) 1. 系统内核小 2. 专用性强 3. 运行环境差异大 4. 可靠性要求高 5. 系统精简和高实时性操作系统 6. 具有固化在非易失性存储器中的代码 7. 嵌入式系统开发工作和环境 嵌入式操作系统的主要特点是什么?(教...

披风秃头侠的博客 2万+

树莓派5安装ROS1避坑指南:从系统配置到cmake报错全解决

本文详细介绍了在树莓派5上安装ROS1的完整流程,包括系统配置、环境变量设置、cmake报错解决等关键步骤。针对树莓派5的ARM架构特性,提供了从基础安装到高级调试的系统级解决方案,帮助开发者高效部署ROS1并避免常见编译陷阱。特别针对cmake报错问题,给出了深度解析和实用修复方法。

spark7igniter的博客 233

NVIDIA Jetson Orin DLA架构解析与AI推理优化实践

深度学习加速器(DLA)作为专用AI推理芯片,通过固定功能架构实现卷积、池化等神经网络操作的高效能比处理。其核心原理在于硬件级优化计算单元与数据流,相比通用GPU可提升3-5倍能效。在边缘计算场景中,DLA与GPU的异构协同成为关键,特别适合自动驾驶感知、机器人视觉等实时性要求高的应用。NVIDIA Jetson Orin平台通过结构化稀疏技术,在ResNet50等模型上实现近2倍性能提升。开发实践中需注意算子支持、精度校准等关键点,结合TensorRT工具链可充分发挥DLA在低功耗场景的独特优势。

weixin_32999557的博客 398

ARM体系结构与汇编100问(二)

第2章 编译器与语言 第14问: Q:00254: Unimplemented RDI message是什么错误提示 我的设置连接都正常,是不是芯片烧了 A:是JTAG的问题.可以先使用ISP操作试试就知道了,如果能ISP,说明LPC2104没有损坏,还能正常运行程序. 第15问: Q:请教:我在调试程序的时候在AXD中出现这样的提示信息:RDI Warning 00159:co

jia0511的专栏 889

Halcon手眼标定保姆级教程:从‘眼在手上’到‘眼到手’两种模式全解析(附代码)

本文详细解析Halcon在机器人视觉引导中的手眼标定技术,涵盖Eye-in-Hand和Eye-to-Hand两种模式,提供从硬件准备到实战代码的完整解决方案。通过精确的相机标定和坐标转换,帮助实现工业自动化中机械臂与视觉系统的高精度协同作业。

weixin_42544461的博客 209

ARM体系结构与汇编100问(三)

第37问: Q:HEX文件.EASY2100配套《ARM微控制器基础与实战》上讲:把项目编译成HEX文件,我不会呀,咋办 A:Target-〉target settings设置Post-linker并且设置Linker-〉fromELF. Q:再问:我用的是光盘里的例子,打开工程项目里是DebugInARM.DebugInFlash.RelInFlash.不是《ARM微控制器基础与实战》上的

jia0511的专栏 935

第28节:cesium 加载高程数据(含源码+视频)

cesium 加载高程(地形)数据

qq_29384639的博客 1741

063.CI/CD for ML:给YOLO项目装上自动化流水线

本文分享了为YOLO目标检测项目搭建CI/CD流水线的实践经验。作者通过手动调试模型导出问题的经历,意识到重复验证工作比模型改进更耗时,提出需要自动化解决方案。文章详细介绍了四阶段流水线设计:1)代码质量检查;2)快速训练验证;3)推理性能基准测试;4)模型注册部署。同时总结了环境不一致、GPU资源争抢等常见问题及解决方案,建议从简单规则开始逐步完善,强调模型版本管理的重要性。实施后不仅提高了效率,还促使团队形成更规范的开发习惯。

2603_95664987的博客 235

嵌入式系统概括

IEEE(国际电气电子工程师学会)的定义:嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置含义:嵌入式系统就是将计算机的硬件或者软件嵌入其他机、电设备或者应用系统中去,所构成了一种新的系统,即嵌入式系统。构造原则:嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统,用于实现对其他设备的控制、监视或者管理等功能。

公众号:风景邮递Yuan的博客 1471

066、AR 应用中虚拟物体漂移抖动?IMU 融合 + 光流追踪的视觉里程计优化方案

AR应用中虚拟物体漂移抖动优化方案 摘要:针对AR应用中虚拟物体漂移抖动问题,提出一种IMU融合与光流追踪的视觉里程计优化方案。关键点包括:1) 采用IMU预积分技术处理高频噪声,通过中值积分计算帧间相对运动约束;2) 使用金字塔LK光流追踪像素运动,通过中值偏差法剔除异常值;3) 构建10帧滑动窗口的紧耦合优化框架,将IMU预积分约束和光流重投影约束联合优化。实验表明,该方法有效解决了时间戳未对齐导致的"跳舞箭头"现象,在手机端实现稳定30fps的AR定位精度,漂移误差降低至厘米级。特别提醒:IMU与视觉

ai技术增长的博客 161

【嵌入式软考】嵌入式系统设计师重要100条知识点速记

【嵌入式软考】嵌入式系统设计师重要100条知识点速记

qq_45355365的博客 1557

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

嵌入式系统设计师是什么?_百度知道

百度首页 | 登录 新闻 网页 贴吧 知道 MP3 图片 百科 帮助 百度知道 > 电脑/网络 > 操作系统相关问题 • 嵌入式系统设计师需要掌握什么? • 本人想报考嵌入式系统设计师人证考试,请问需要具备... • 嵌入式系统设计师英文名称 • 嵌入式系统设计师07年还出新教材么 • 嵌入式系统设计师的大纲下载! 更多>> 订阅该问题 合肥富通机电专业从事真空系统设计 富通机电专业从事电

shulia1337的专栏 2236

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Prolog语言的嵌入式系统

Prolog(Programming in Logic)是一种基于逻辑编程范式的语言,最初在1972年被开发出来。其核心思想是利用逻辑谓词进行推理和证明。Prolog语言在人工智能、自然语言处理、知识表示等领域取得了显著的成就。与传统的命令式编程语言不同,Prolog更关注“是什么”,而不是“如何做”,这使其在处理复杂问题时具有独特的优势。嵌入式系统指的是为特定功能而设计的计算机系统,这些系统通常嵌入在设备中,以实现控制、监测等功能。资源受限:嵌入式系统通常具有有限的处理能力、内存和存储空间。实时性。

2501_90416942的博客 463

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

通义千问3-Reranker-0.6B在嵌入式系统中的应用探索

本文介绍了如何在星图GPU平台上自动化部署通义千问3-Reranker-0.6B镜像,并探索其在嵌入式设备上的应用。该轻量级重排序模型经过量化后,可在资源受限的树莓派等设备上本地运行,实现智能家居语音助手对用户指令的精准语义理解与答案匹配,有效解决延迟与隐私问题。

weixin_35886636的博客 509

Swift语言的嵌入式系统

Swift是一种由苹果公司开发的编程语言,首次发布于2014年。作为一种面向对象并支持函数式编程的语言,Swift强调代码的安全性和可读性,其设计初衷是为了取代Objective-C,专注于提升开发效率和应用性能。Swift不仅具备现代编程语言的特性,如类型安全、内存管理和并发处理能力,还拥有简洁的语法,使得开发者能够更快速地完成复杂功能的实现。Swift作为一种现代编程语言,展现出了在嵌入式系统开发中的广泛潜力。

2501_90231753的博客 1125

南邮-嵌入式系统

南邮/嵌入式系统/期末复习

Lanlan 4881

软考嵌入式系统工程师知识点整理(软件工程)

软件工程软件测试的基础知识 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用

wzz4420381的博客 3339

嵌入式系统开发的生命周期

嵌入式系统开发过程可以分为以下7个阶段: 1、产品定义 这里的产品,指的是由嵌入式软件和加载它的硬件平台一起组成的系统。所以,产品定义实际上就是GJB2786A里所说的系统需求开发。

伤心的辣条 1075

嵌入式系统设计师冲刺:如何用‘二八定律’高效攻克软考核心知识点

本文针对嵌入式系统设计师软考冲刺阶段,提出运用‘二八定律’高效备考策略。重点解析嵌入式硬件、系统开发与维护等核心高频考点,提供冲刺学习指南,帮助考生聚焦20%关键知识以获取80%分数,提升应试效率。

palm99的专栏 793

【亲测免费】 PROTEUS+Keil仿真100实例

PROTEUS+Keil仿真100实例 【下载地址】PROTEUSKeil仿真100实例 欢迎使用“PROTEUS+Keil仿真100实例”资源包,本资源是专为嵌入式系统、单片机学习者设计的学习辅助资料。通过这100个精心挑选的实例,您将能够深入理解并掌握如何利用PROTEUS进行仿真模拟,结合Keil软件编写和调试C语...

gitblog_09792的博客 840

【免费下载】 MC9S12XEP100中文数据手册

MC9S12XEP100中文数据手册 【下载地址】MC9S12XEP100中文数据手册分享 MC9S12XEP100中文数据手册 项目地址: https://gitcode.com/Open-source-documentatio...

gitblog_06655的博客 864

基于RexUniNLU的嵌入式系统开发文档自动生成

本文介绍了如何在星图GPU平台上自动化部署RexUniNLU零样本通用自然语言理解-中文-base镜像,实现嵌入式系统开发文档的智能自动生成。该镜像可深度解析C代码语义与硬件交互意图,典型应用于驱动代码→技术文档的一键转化,显著提升嵌入式开发效率与文档准确性。

weixin_42518874的博客 388
上一篇: 干货讲解 | OKT507-C开发板基于Linux系统的应用笔记
下一篇: 如何设置chrome谷歌浏览器不显示图片
six2me
博客等级 码龄23年 1万+粉丝 291原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

six2me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值