keil相关内容
我有这个代码: 无符号字符 *command = "0000";无符号字符 foo = (hex_char_to_int(command[0])
..
我正在为 Stellaris LM3S1607 芯片开发引导加载程序.我正在使用 Keil MicroVision4 C 编译器.这个想法是创建 2 个独立的固件,一个将更新另一个.在固件 1 中,我下载了固件 2 文件并将其写入地址 0x3200 的闪存.直到这里它正在工作.我还验证了数据是否正确写入闪存.现在我有两个应用程序.一个是我的 uip 引导加载程序,而 seoncd 一个是我的主要项
..
我正在使用 Keil 为 ARM 7 编写程序集. 我有以下运行时错误: 非对齐访问:ARM 指令在 000000F8H,内存访问在 7F7F7F7FH数据中止:ARM 指令在 000000F8H,内存访问在 7F7F7F7FH 这并没有真正帮助我,因为我不知道“非对齐访问"是什么,(除了显而易见的,但我并不真正理解它的含义)我我试图访问(存储)0x7F7F7F7F,有什么问题?
..
RealView ARM C 编译器支持将变量放置在给定的内存地址使用变量属性 at(address): int var __attribute__((at(0x40001000)));变量 = 4;//改变位于 0x40001000 的内存 GCC 有类似的变量属性吗? 解决方案 我不知道,但您可以轻松地创建这样的解决方法: int *var = (int*)0x40001000;
..
如何在Keil MDK-ARM中启用Linker MAP文件的生成,在 IAR Embedded Workbench 中,我使用以下步骤选项 > 链接器 > 列表 > 选中生成链接器映射文件.我尝试在 Keil,MDK-ARM 上使用相同的步骤,但没有用,任何帮助将不胜感激 解决方案 Project->Options for Target target name...->Listing T
..
我正在尝试编写一个区域来定义我在 RAM 上的数据,以及一个用于我的代码的区域.我试图这样做,但我无法让它发挥作用.我也尝试过使用 EXPORT 和 IMPORT 但在使用它们时我无法解决各种错误. AREA HEAP, READWRITE, ALIGN=3MYSTR DCB "JaVid",0区域重置,代码,只读;导入MYSTR入口ADR R0, MYSTR ;字符串指针下一个 LDRB R
..
我正在 Keil uVision 5 环境中的 Freescale Freedom KL46Z 板上用 ARM 汇编语言编写代码.我的代码很长,但在代码的主要部分,每当我尝试加载 (LDR) 常量或变量时,我都会收到此错误:错误:A1284E:文字池太远,使用LTORG将其组装在4KB以内我不知道这意味着什么或如何解决它.发生错误的地方都在类似的说明上.例如,第一个错误出现在一条指令上:LDR R
..
我刚刚开始探索 STM32 MCU.我想使 BluePill(具有 STM32F103C8T6 MCU)板上的 LED 闪烁.我怀疑我被什么东西误导了.根据F1系列的参考手册,有3个主要步骤: 为 PORT 启用时钟(此处为 PORTC) 配置 CNF/MODE 寄存器 根据需要配置 ODR 寄存器,即引脚上的高/低. 我已经按照手册在 KEIL MDK 中编写了代码,但在加载后,
..
代码: dest EQU 0x40000000区域名称、代码、只读入口移动 r0,#2LDR r1, =destSTR r0, [r1]停止 B 停止结尾 此代码将 2 的值写入内存位置 0x40000000.当我将其更改为 0x20000000 时,2 无法在那里写入.与 0x3FFFFFFF 相同.当我将内存位置设置为 0x40003FFF 时,2 会打印到该位置,但是当我将地址更改为 0
..
我正在尝试使用 ARM Compiler 5 为 Cortex A 微处理器编译以下两段代码: 第 1 部分: static inline void cp15_write_sctlr(uint32_t value){asm(“mcr p15, 0, %0, c1, c0, 0"::“r"(值));}静态内联 uint32_t cp15_read_actlr(void){uint32_t a
..
我正在尝试准确了解异常表 (.arm.extab) 的工作原理.我知道这取决于编译器,因此我将自己限制在 armcc(因为我使用的是 Keil). 表中的典型条目如下所示:b0aa0380 2a002c00 01000000 00000000 据我所知,第一个字为个性例程编码指令,而第三个字是将 R_ARM_PREL31 重定位到 catch 块的开头. 让我感到困惑的是第二个词
..
我是使用 Keil Microvision V5.12 编译器进行 ARM 编程的新手.我无法编译一个简单的汇编项目,出现此错误: .\Objects\learn.sct(7): error: L6236E: 没有节匹配选择器 - 没有节是第一个/最后一个. 我已尝试搜索,但找不到任何解决此问题的方法. 这就是我所做的: 创建一个项目(没有启动文件) 添加新的程序集文件 (lea
..
我将要为我的项目使用 C 语言为 STM32 处理器上的 Cortex-M 内核开发一些固件,并在网上搜索我发现了很多不同的编译器:Keil、IAR、Linaro、Yagarto 和 ARM 嵌入式处理器的 GNU 工具. 我想知道,这些编译器之间有哪些功能差异可能会影响我的选择?例如,作为发烧友,我不需要供应商的支持或帮助,目前对代码大小进行限制是可以的.此外,易用性也不是主要问题,因为我
..
我正在使用来自 mbed 的 LPC 1768 板,(带有 cortex M3 cpu)并且我试图在这里实现一些东西,主要是从 SD 卡升级用户应用程序,我正在编写两个程序,首先是引导加载程序/纳米-内核和用户应用程序(helloworld 将用于开始): 0x00 地址处的引导加载程序/纳米内核运行,它会做一些检查并最终抓取 SD 卡上的二进制文件 Bootloader/nano-ker
..
我正在使用 Keil 为 ARM 7 编写程序集. 我有以下运行时错误: 非对齐访问:ARM 指令在 000000F8H,内存访问在 7F7F7F7FH数据中止:ARM 指令在 000000F8H,内存访问在 7F7F7F7FH 这并没有真正帮助我,因为我不知道什么是“非对齐访问"(除了显而易见的,但我真的理解是什么意思)我正在尝试访问(存储)到0x7F7F7F7F,有什么问题?
..
我想访问内联臂程序集中在 C 中声明的局部变量.我该怎么做? 全局变量可以这样访问, int temp = 0;功能(){__asm(".global temp\n\t""LDR R2,=temp\n\t""LDR R2, [R2, #0]\n\t");} 但是我如何访问局部变量呢?我尝试将局部变量的“.global"更改为“.local",但它产生了错误(对“temp"的未定义引用).
..
RealView ARM C 编译器支持在给定的内存地址放置一个变量使用变量属性 at(address): int var __attribute__((at(0x40001000)));无功 = 4;//更改位于 0x40001000 的内存 GCC 是否有类似的变量属性? 解决方案 我不知道,但您可以轻松创建如下解决方法: int *var = (int*)0x40001000;
..
我想在我的项目中使用 USART 通信协议.提供了通信,但发送了错误数据(STM> PC). 我会尝试: 边界带相同. 测试了 PLL 源多路复用器 (HSI-HSE) 和系统时钟多路复用器 (HSI-HSE-PLLCLK) 的合适组合.可用:HSE 和 PLLCLK APB1 时钟频率在允许范围内改变.观察到在每次变化时获得的数据也发生了变化.有时 STM 发送的数据非常
..
我使用的是 STM32F207VC 控制器.并且我正在使用 uvision4 IDE,当我尝试编译一个简单的代码时,我收到错误 tst1.axf: Error: L6218E: Undefined symbol SystemInit(从 startup_stm32f2xx.o 引用)..我已将 stm32f2x 文件放置到我的项目目录中. 但还是同样的问题. 请帮忙解决这个问题.
..
我刚刚开始探索STM32 MCU.我想使BluePill(具有STM32F103C8T6 MCU)板上的LED闪烁.我怀疑我被某些东西误导了.根据F1系列参考手册,主要包括3个步骤: 为PORT(在此为PORTC)启用时钟 配置CNF/MODE寄存器 根据需要配置ODR寄存器,即引脚上的HIGH/LOW. 我已经按照手册在KEIL MDK中编写了代码,但是在加载后,代码没有运行,我
..