基于armv7的设备,在qemu下启动,裸机运行
2024.8.2更新,添加简单的启动,task调度代码
文章目录
文档资料
imx6ull 官方资料链接
Arm官方文档
ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition
ARM Cortex-A Series Programmer’s Guide for ARMv7-A
Arm A-profile Architecture Registers
Arm A-profile A32/T32 Instruction Set Architecture
Arm A-profile A64 Instruction Set Architecture
arm_compiler_user_guide_100748_6.22_00_en
Arm Architecture Reference Manual for A-profile architecture : (AArch64)
gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz
https://developer.arm.com/downloads/-/gnu-a
gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
https://developer.arm.com/downloads/-/gnu-rm
qemu环境搭建
- qemu源码下载
- 100ask修改版qemu源码下载
- 100ask 6ullqemu
# 本文运行方式,使用官方的qemu也能正常运行,只使用imx6ull的功能
git clone https://e.coding.net/weidongshan/ubuntu-18.04_imx6ul_qemu_system.git
- 6ull裸机开发资料
git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
git clone https://e.coding.net/weidongshan/noos/cortexA7_windows_tools.git
git clone https://e.coding.net/weidongshan/hardware/doc_and_source_for_hardware.git
git clone https://e.coding.net/weidongshan/noos/doc_and_source_for_mcu_mpu.git
编译器下载
:arm-none-linux-gnueabihf
# ,用 aria2c 比 wget 实在是快太多了
https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
armv7架构
寄存器
异常处理
lr的地址调整:关于ARM的PC指针
疑问: armv7进入异常的时候根据规范描述是可以选择进入arm,或者thumb状态的?那么如果可以选择thumb编译的时候要按照thumb的格式编译
A3:Application Level Memory Model
三种属性的设备:
Normal
Device
Strongly-ordered
猜测:和 mmu,或者乱序执行有关?