Fullstar

Archives

  • December 2025
  • August 2024
  • July 2024
  • February 2024
  • November 2023
  • August 2023
  • July 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • February 2022
  • January 2022
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020

Categories

  • Code
  • Lens
  • Life
0
Fullstar
  • Code

Windows下ARM编程实验

  • November 29, 2020
  • Brandon

Looking for a Shorter Overview?

AI Summary

在 Windows 上使用 Keil uVision5 开展 ARM9 实验时,需要安装对应的 ARM9 支持包。文中还给出链接脚本、未定义符号和汇编调用 C/C++ 函数时的 8 字节对齐错误处理方法。

Key Moments

AI-generated
1

安装Keil与ARM9支持包

使用Keil uVision5作为汇编集成环境,并安装ARM9支持包以开展基于ARM9的实验。
2

修复L6630E链接脚本错误

出现L6630E无效标记错误时,在Linker选项卡取消Use Memory Layout选项并清空自动生成的Scatter file内容。
3

修复L6218E未定义符号错误

出现Image ERROM1 RO$$Length未定义符号错误时,在Asm选项卡的define栏定义__EVAL。
4

汇编调用C函数的对齐要求

汇编文件调用C/C++函数时使用IMPORT声明函数;若发生8字节对齐错误,在文件开头加入PRESERVE8指令。
Total
0
Shares
0
0
0

一.环境搭建

1.汇编集成环境:Keil uVision5,可网上查找破解版与基本使用方式
2.由于实验基于ARM9进行,因此需要继续安装ARM9支持包,具体安装方式可参考此链接:MDK5搭建ARM9开发环境

二.Keil运行c/c++程序提示错误

1.Error: L6630E: Invalid token start expected number or ( but found n at position 5 on line 5
解决方法:
在options 的Linker选项卡中不要选择 【Use Memory Layout from …】,并且把下边自动生成的Scatter file文本框清空。

2. L6218E: Undefined symbol Image ERROM1 RO$$Length (referred from s3c2440.o).
解决方法:
options的Asm选项卡下的define栏中输入__EVAL,即定义__EVAL

三.Arm汇编程序(.s)调用c/c++函数

1.在c/c++文件内定义函数
2.假设调用函数名为int Ledlamp(),则需要在文件头写入:IMPORT Ledlamp
3.若提示错误:Error: L6238E: test.o(DATA) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte aligment of 8-byte data objects)' function to 'REQ8 (Code was permitted to depend on the 8-byte aligment of 8-byte data items)' function Ledlamp.
解决方法:
在汇编文件的开头,添加“PRESERVE8”指令

;for example
PRESERVE8
IMPORT Ledlamp
AREA |DATA|,CODE,READONLY
ENTRY

LDR R13,=0x1000
BL Ledlamp
END

Related Posts

AI-generated

嵌入式程序设计基础(ARM9)

从DCB、AREA到ADR、LDR,快速掌握ARM9汇编伪指令的存储分配、段定义与地址加载,并借助子程序、条件判断、循环和内嵌汇编示例建立程序设计基础。
65.9% match November 28, 2020

ARM9指令系统常用指令

从条件执行和CPSR标志位开始,快速梳理ARM9的数据运算、64位乘除法链、分支跳转、寄存器与内存传送,以及批量入栈出栈等常用指令格式。
55.2% match November 28, 2020

Questions Answered

AI-generated

Windows 下进行 ARM9 实验需要安装哪些工具?

安装 Keil uVision5,并额外安装 ARM9 支持包。

如何解决 Keil 的 L6630E 内存布局错误?

取消内存布局选项,并清空自动生成的 Scatter 文件。

L6218E 未定义 ERROM1 符号应如何处理?

在 Asm 的 define 栏中定义 __EVAL。

汇编调用 C/C++ 函数出现对齐错误怎么办?

文件开头加入 PRESERVE8,并导入目标函数符号。

Next Up

掌握ARM9汇编
掌握ARM9指令
拆解 ELF 链接
掌握X86标志位
Total
0
Shares
Share 0
Tweet 0
Pin it 0
Brandon

Previous Article
  • Code

嵌入式程序设计基础(ARM9)

  • November 28, 2020
  • Brandon
View Post
Next Article
  • Code

Linux shell常用指令

  • December 6, 2020
  • Brandon
View Post
You May Also Like
View Post
  • Code

Letta部署记录

  • Brandon
  • December 26, 2025
View Post
  • Code

WordPress 后台任务利器:使用 BGRunner 构建可靠的异步处理

  • Brandon
  • December 14, 2025
View Post
  • Code

WordPress image offload

  • Brandon
  • December 14, 2025
View Post
  • Code

ComfyUI应用手册

  • Brandon
  • December 6, 2025
View Post
  • Code

Leetcode Java常用代码

  • Brandon
  • February 17, 2024
View Post
  • Code

Golang入门

  • Brandon
  • February 4, 2024
View Post
  • Code

Setting Up and Maintaining a Ubuntu Environment for My Home Server

  • Brandon
  • November 24, 2023
View Post
  • Code

Swift Learning Log

  • Brandon
  • August 31, 2023

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Fullstar

Input your search keywords and press Enter.

嵌入式程序设计基础(ARM9)

ARM9指令系统常用指令

链接原理浅析(基于Unix ELF文件格式)

汇编基础:常用指令(X86)

Linux运行程序与shell编程

常用工具指令

UP NEXT

嵌入式程序设计基础(ARM9)

65.9% match November 28, 2020 0