
二刷uboot
文章平均质量分 70
[T]
这个作者很懒,什么都没留下…
展开
-
七、初始化环境变量
else {#if!int ret;if (ret)#endif /*!原创 2023-04-08 21:03:50 · 373 阅读 · 0 评论 -
六、Nand初始化
int i;for (i = 0;i++) {原创 2023-04-08 21:05:07 · 624 阅读 · 1 评论 -
五、基础初始化(init_sequence)
UPLLCON 0x4C000008 //UPLL锁相环控制器,控制着UCKL频率,USB的时钟频率。UPLLCON 0x4C000008 //UPLL锁相环控制器,控制着UCKL频率,USB的时钟频率。MPLLCON 0x4C000004 //MPLL锁相环控制器,控制着FCLK的频率。MPLLCON 0x4C000004 //MPLL锁相环控制器,控制着FCLK的频率。// 0个停止位,8位数据。// 0个停止位,8位数据。//取消使能自动流量控制。//取消使能自动流量控制。原创 2023-04-08 21:03:14 · 560 阅读 · 0 评论 -
四、第二阶段
3) memory强制gcc编译器假设RAM所有内存单元均被汇编指令修改,这样cpu中的registers和cache中已缓存的内存单元中的数据将作废。_bss_start是bss的开始地址,_armboot_start是Uboot的开始代码地址,这里monitor_flash_len得到的是整个Uboot的长度。即:原原本本按原来的样子处理这这里的汇编。if ((val=envmatch((uchar *)name, i)) < 0) // 判断名称。原创 2023-04-08 20:52:08 · 538 阅读 · 0 评论 -
三、位置判断与代码搬移
从地址总线可以看出,Nor和Nand启动的区别为BootSRAM位置,所以判断0x40000000-0x40000FFFF是否可以存储数据,就可以知道是不是Nor启动。拷贝:从_start,拷贝(_bss_start - _armboot_start )整个代码。_bss_start - _armboot_start 代码大小。_armboot_start = _start 代码起始。NFCONT(配置使能Nand Flash)NFSTAT(Nand Flash状态)NFCMD(Nand Flash命令)原创 2023-04-08 20:50:36 · 495 阅读 · 0 评论 -
二、总线频率设置
说明:只要比实际大就行(实际为:32MB/32MB),因为bootloader和linux内核都可以检测可用空间的。说明:主要设置Bank0-7的位宽(默认8bit)、使能WAIT(默认无效)、使能UB/LB(默认不使用)6-7是ROM、SRAM、SDRAM等存储器Bank。B3_BWSCON ===》 16bit+WAIT+UBLB (DM9000 网卡)总线有8个Bank,每块128M(128M*8 = 1G)6-7两个大小可编程 (起始地址为0x30000000)BankSize寄存器。原创 2023-04-08 20:46:28 · 642 阅读 · 0 评论 -
一、源码详解(第一阶段)
lowlevel_init + 绝对地址差 =》SMRDATA 相对(lowlevel_init )地址。* 对于MPLLCON寄存器,[19:12]为MDIV,[9:4]为PDIV,[1:0]为SDIV。说明:先设置为sys模式(sys模式具有可以直接切换到其他模式等特权),然后设置为svc模式。设置RAM数据周期(在RAM运行带依赖RAM设置;代码重定位之前,设置RAM读写频率)* 设置CLKDIVN,令分频比为:FCLK:HCLK:PCLK=1:4:8,设置栈(为调转c语言准备环境);原创 2023-04-08 20:37:49 · 746 阅读 · 0 评论