首页 > 系统相关 >Linux 嵌入式预备知识

Linux 嵌入式预备知识

时间:2023-03-12 16:13:34浏览次数:50  
标签:初始化 uboot 启动 预备 DCD 寄存器 Boot 嵌入式 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  下载镜像

 

标签:初始化,uboot,启动,预备,DCD,寄存器,Boot,嵌入式,Linux
From: https://www.cnblogs.com/zhangzhekun/p/17208338.html

相关文章

  • 《痞子衡嵌入式半月刊》 第 73 期
    痞子衡嵌入式半月刊:第73期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。本期刊是开源项目(GitHub:Ja......
  • Linux pkill 命令
    原文地址:https://www.runoob.com/linux/linux-comm-pkill.htmlLinuxpkill用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。kill......
  • Linux操作系统CentOS 7忘记root密码解决办法
    root用户忘记密码解决办法重启系统输入命令:reboot,并在重启的前三秒内按向下的按键,目的是为为了不让它进入系统,而是停留在开机页面,如下图所示编辑文档在开机页面按方向......
  • linux中cp-a和cp-r的区别是什么
    原文地址:http://net.sanhaostreet.com/it/202203/1513250.htmllinux中cp-a和cp-r的区别是什么Linuxcp(英文全拼:copyfile)命令主要用于复制文件或目录。语法cp[options......
  • 在Linux中如何注销其他 SSH 用户
    今天我们简单介绍一下如何踢掉其他通过ssh连接到系统中的用户。 Pixelatedword Linux madefromcubes,mosaicpattern如果你通过ssh登录了一个远程L......
  • Linux邮件mail.rc配置,发件服务配置
    Linux邮件mail.rc配置前提条件邮箱需要开启smtp功能关闭selinux和防火墙1、 安装mailxyuminstall-ymailx2、 配置/etc/mail.rc#在文件结尾添加以下内容se......
  • Bclinux yum源无法使用
    内网yum源案例:问题现象:  解决方案:将enable=1修改为enabled=0问题即可解决[root@localhostcloudman]#vi/etc/yum/pluginconf.d/license-manager.conf[main......
  • Linux(Ubuntu) 环境下安装 Qt
    真蠢,之前费那么大劲,只要一句命令就完事了使用apt安装sudoaptinstallqtcreator但是在用命令行构建project时可能会报错qmake-projectcouldnotfindaQtinsta......
  • LINUX下安装Oracle监听报错Error: null
    今天在安装Oracle配置监听的时候执行netca报错:Error:nullCheckthetracefilefordetails:/u01/app/oracle/cfgtoollogs/netca/trace_OraDB12Home1-2303119PM5318.log......
  • WattOS:一个稳又快的轻量级 Linux 发行版
    Linux 领域里的每个人不是听说过就是使用过某个轻量级的Linux发行版。大家都知道我们不断追求的是:占用内存少,配置资源要求低,包含一个轻量级的桌面环境(或者窗口管理器......