Linux 嵌入式预备知识

硬件启动

 

EMMC启动 10100110

 

 

1.bootmode 01 参考手册/芯片手册

2.bootdevices   只有内部启动[1:0]的时候才会需要选择启动设备

 

 

支持NOR flash,NAND flash,SD/EMMC, qspi flash…..(如果是nand需要关注page)

 

通过boot_cfg 1,2,4(每个八位,4的八根全部接地)  LCD_DATA_[0:23]

 

分压原理,拨码开关打开,接受到高电平。

 

裸机实验中生成的led.bin直接放到sd卡中是没办法启动的,需要加一个头文件

1.Boot rom 做的事情

设置内核时钟,enable cache,从boot_cfg读取image

 

Device initialization  0x00017fff/1024=96k rom 

 

2.IVT和Bootdata数据

例如:sd卡的ivt表偏移地址是1k,因为前512k写了分区信息,如果覆盖sd就废了

 

 

 

3.DCD数据

复位以后, I.MX6U 片内的所有寄存器都会复位为默认值,但是这些默认值往往不是我们

想要的值,而且有些外设我们必须在使用之前初始化它。为此 I.MX6U 提出了一个 DCD(Device

Config Data)的概念,和 IVT、 Boot Data 一样, DCD 也是添加到 load.imx 里面的,紧跟在 IVT

和 Boot Data 后面, IVT 里面也指定了 DCD 的位置。 DCD 其实就是 I.MX6U 寄存器地址和对应

的配置信息集合, Boot ROM 会使用这些寄存器地址和配置集合来初始化相应的寄存器,比如

开启某些外设的时钟、初始化 DDR 等等。

 

 

 

 

 

 

 

C语言驱动led

 

  

1.首先设置芯片处于svc模式   CPSR 寄存器bit[4:0] 10011=0x13

 

2.设置sp指针

sp可以指向内部ram,也可以指向ddr,有512mb取值范围  0x8000-0x9FFFFFF

栈内存:2MB (需要栈在ram取值范围内)

3.跳转到c语言

使用b指令跳转到c语言函数,比如main函数

 

4.链接文件

.定位点  确定链接地址

.确保程序先跑start.s 汇编文件初始io

.bss 为定义了但是未初始化的数据   一般需要清零

 

 

 

 

Uboot

2023年3月11日

16:05

 

1.uboot(可以用于上位机 系统升级)

1.uboot 是一个裸机程序(bootloader)

2.uboot 就是一个bootloader  作用引导linux启动 (初始化ddr)

Linux 镜像(zimage)  设备树(dtb)[将linux zimage 从外部flash 读取到ddr]

Uboot 不仅可以启动linux,也可以启动其他系统 suchas vxworks(反之亦然)

1.U-Boot – DENX Software Engineering

2.soc 定制uboot

 

从emmc 启动

 

 

Uboot 类似于uefi  命令行操作

可以设置环境变量

 

Printevn /setenv/saveenv/bdinfo

Setenv  envval   设置空值就是删除

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用nfs/tftp  下载镜像

 

posted @ 2023-03-12 15:52  张喆坤  阅读(75)  评论(0)    收藏  举报