启动命令
mmc dev 1
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
bootz 80800000 - bootz 80800000 - 83000000
2025/8/22小于 1 分钟
启动命令
mmc dev 1
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
bootz 80800000 - bootz 80800000 - 83000000
裸机程序不会用到PSP,只用到MSP,需要运行RTOS的时候才会用到PSP。
内部两个晶振,一个32M给RTC,另一个24给系统
这个24经过倍频,初始得到7路PLL,有2路PLL会分出8路PFD,作为外设的时钟源
这是PLL和PFD经过处理后得到外设时钟
PLL,PFD的频率可以通过寄存器设置,分频也是
修改PLL的频率要将当前时钟选择到对应晶振产生的原始时钟上
两个PAD的寄存器是属性配置寄存器
一个MUX的是复用功能选择寄存器
~(波浪号):当前用户的“主目录”含义:等价于 /home/用户名/,是当前登录用户的个人目录(存放用户的文件、配置、桌面等)。
举例
:
dv,则 ~ 等价于 /home/dv/。~/桌面 即 /home/dv/桌面(用户的桌面目录)。~/.bashrc 即 /home/dv/.bashrc(用户的环境配置文件)。作用:快速访问自己的个人文件,避免输入冗长的 /home/用户名/ 路径。
包含自定义头文件时要用“”,不是<>,Linux下<>是在系统文件里面查找,而其他开发环境会自动在当前文件目录和系统文件都查找
在 GCC(Linux)环境下,默认就只在标准系统头文件路径(比如 /usr/include)找,不会自动帮你找当前目录下的头文件,所以报错。
就是保存成文件的Linux命令
它是用文件的时间戳判断“需不需要执行命令”。
如果目标文件(如果存在)已经是最新的,就不会执行!
ARM架构处理器的指令不能直接操作内存地址,要寄存器为中介,将目标地址写在寄存器中,操作寄存器
分为text(代码段),data(初始化变量),bss(未初始化变量)
_start是入口顺序执行,跳转到main后不继续?
// start.c
void Reset_Handler(void) {
// 启动代码...
main();
}
// main.c
#include <stdio.h>
const char msg[] = "Hello"; // 只读数据(.rodata)
int a = 123; // 已初始化全局变量(.data)
int b; // 未初始化全局变量(.bss)
int main(void) {
b = a + 1;
printf("%s %d\n", msg, b);
while (1);
}
