u-boot.2012.10——mini2440(启动流程分析)

liuyuchun liuyuchun     2022-11-18     651

关键词:

参考资料:https://blog.csdn.net/suiyuan19840208/article/details/7239949

1、第一阶段功能

  * 硬件设备初始化

  * 加载u-boot第二段代码到RAM空间

  * 设置好栈

  * 跳转到第二段代码入口

2、第二段代码的功能

  * 初始化本阶段使用的硬件设备

  * 检测系统的内存映射

  * 将内核从Flash读到RAM中

  * 为内核设置启动参数

  * 调用内核

3 、u-boot第一阶段代码分析

我们在编译完成之后,观察顶层目录有个u-boot.lds的链接脚本

 

* 经过编译之后,查看文件u-boot.lds链接脚本,可以看到第一个链接文件是start.S

技术分享图片

 

4、start.S

* 设置异常向量

当一个异常产生时,CPU根据异常号在异常向量表中找到对应的异常向量,然后执行异常向量处的跳转指令,,CPU跳转到对应的异常处理程序执行。

其中复位异常向量的指令“b start_code”决定了启动后将自动跳转到标号"start_code"处执行。

技术分享图片

* CPU进入SVC模式

从数据手册上可以看到10011就是设置为管理模式

技术分享图片

 

技术分享图片

 * 设置控制寄存器的地址

技术分享图片

* 关闭看门狗

技术分享图片

* 屏蔽中断

技术分享图片

 

*设置时钟

技术分享图片

 CPU上电几毫秒后,晶振输出稳定,FCLK=Fin(晶振频率),CPU开始执行指令。但实际上,FCLK可以高于Fin,为了提高系统时钟,需要用软件来启用PLL。这就需要设置CLKDIVN,MPLLCON,UPLLCON这3个寄存器。 

 CLKDIVN寄存器,CLKDIVN寄存器用于设置FCLK,HCLK,PCLK三者间的比例

 技术分享图片

设置CLKDIVN为5,就将HDIVN设置为二进制的10,由于CAMDIVN[9]没有被改变过,取默认值0,因此HCLK = FCLK/4。

 PDIVN被设置为1,因此PCLK= HCLK/2。因此分频比FCLK:HCLK:PCLK = 1:4:8 。

 

 FCLK提供给ARM920T的时钟

 HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB总线的时钟  

 PCLK 是提供给用于外设如WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和SPI的 APB 总线的时钟

 

 FCLK与Fin的关系如下面公式:

技术分享图片

MPLLCON寄存器用于设置FCLK与Fin的倍数。MPLLCON的位[19:12]称为MDIV,位[9:4]称为PDIV,位[1:0]称为SDIV。

技术分享图片

MPLLCON与UPLLCON的值可以根据参考:

技术分享图片

MPLLCON=(0x7f<<12) | (0x02<<4) | (0x01) = 0x7f021

UPLLCON=(0x38<<12) | (0x02<<4) | (0x02) = 0x38022

[mini2440]使用minitool给mini2440刷机

很遗憾,韦东山老师的内核无法直接适用于mini2440开发板。 使用oflash工具和OpenJTAG将友善之臂提供的Superboot2440.bin烧写到NorFlash中。Superboot2440.bin文件路径:FriendlyARM-2440-DVD-2015-07-20FriendlyARM-2440-DVDimagesSuperboot2440.binWindows 查看详情

[mini2440]使用minitool给mini2440刷机

一安装miniTools工具  miniTools安装包路径:mini2440光盘windows平台工具MiniTools-USB下载工具MiniToolsSetup-Windows-20150528.exe  Windows平台下安装MiniTools工具,双击安装即可。安装好后桌面会出现miniTools应用的图标,双击执行效果为: ... 查看详情

内核搭建完整的mini2440开发板驱动开发环境(仿照jz2440驱动开发环境搭建)

...文>>注意:本开发板提供的linux内核并不能直接用于u-boot,因为我们公司是不使用u-boot的,并且对其各个参数设置并不了解,关于U-Boot的使用方法用户可以参考网上的资料。我了个。。。鉴于使用免费版的mini2440光盘资料,驱... 查看详情

mini2440u-boot编译

U-boot编译byHYH|2018年1月1日上午9:59一.说明1.下载gitclone  git://repo.or.cz/w/u-boot-openmoko/mini2440.git备用:gitclone https://github.com/HEYAHONG/u-boot_mini2440.git2. 要求系统中安装有正常的编译工具链(gcc,mak 查看详情

为mini2440创建debian根文件系统

为mini2440创建debian根文件系统byHYH|2018年4月17日下午8:42一.准备1.需要在debian环境下,且安装有debootstrap.2.由于mini2440比较老,所以使用armel架构的linux软件。而且由于官方使用的内核也比较老所以不能使用debian9(代号:stretch),如果... 查看详情

[mini2440]模块导出符号给另一个模块使用

一前言 二示例模块 三相关知识点 四 查看详情

mini2440使用jlink烧写superboot到norflash

...们即可了,可是没找到适合S3C2440的。所以自己建了一个mini2440.jflash,手动进行配置:j-link设置1.打开J-FlashARM,并进入菜单:Options-->Projectse 查看详情

mini2440使用uclibc编译静态程序

...uClibc编译静态程序byHYH|2018年1月22日下午2:04一.说明1.因为mini2440剩余空间有限,外加没有什么可用的包管理器。想直接编译C程序(比如用C语言写cgi程序)很不方便。使用交叉编译还需要再传输文件,没有直接在板子上写程序来的... 查看详情

mini2440busybox编译

busybox编译byHYH|2018年1月19日下午2:20一.说明1.编译busybox与编译linux内核的环境要求差不多。需要交叉编译工具gcc和正常编译工具链(make,gcc)。如果缺少头文件,可能能需要自行安装。2.下载https://busybox.net/downloads/二.配置与编译1.... 查看详情

mini2440编译工具链(gcc)安装

编译工具链(gcc)安装byHYH|2018年1月1日上午9:36一.说明 下载下载十分简单,在友善之臂的官网下直接下载即可。名字是arm-*-gcc*.http://www.arm9.net/download.asp 2.要求liunx系统中安装有tar,gzip等工具,还要求有一种文本编辑器(v... 查看详情

mini2440httpd使用(busybox自带)

httpd使用(busybox自带)byHYH|2018年1月20日下午4:17一.说明1.该功能需要busybox自带httpd。busybox自带的httpd的参数如下:2.httpd可配置文件帮助(见源码:networking/httpd.c):*httpd.confhasthefollowingformat:**H:/serverroot#definetheserverroot.Itwil 查看详情

mini2440裸机开发之串口uart(代码片段)

一、S3C2440上的UART1.1串口概述串口的使用位于S3C2440芯片手册的第11章。S3C2440A的通用异步收发器(UART)配有3个独立异步串行I/O端口,每个都可以是基于中断或基于DMA模式的操作。换句话说,UART可以通过产生中断或DMA请求来进行CP... 查看详情

mini2440裸机音乐播放器(非常久曾经的笔记)

...不播放时显示hellomusic图片)项目设备:windows7(32位),mini2440。uboot(nandflash)。ADS1 查看详情

qemuformini2440

qemuformini2440byHYH|2018年1月2日下午5:24一. 说明1.下载gitclonegit://repo.or.cz/qemu/mini2440.git备用:gitclone https://github.com/HEYAHONG/QEMU_mini2440.git2.要求除了需要完整的编译工具(gcc,make),还需要sdl库等。如果出现XXnotFo 查看详情

最近研究arm嵌入式,想问问精智的jz2440和mini2440这两块开发板的区别在哪里!

...,按照那个改写实验例程。我也买了一个JZ2440,从实验到U-BOOT移植,全部DIY,现在还在U-BOOT串口那里困扰着,好痛苦,你也加油。参考技术A本人使用JZ2440板子有段时间了,有几点说明一下:1.现在是V2,有NORFLASH2.MINI2440也是2K的NA... 查看详情

请教大家jlinkv8如何与mini2440连接

请教大家JlinkV8如何与MINI2440连接一个是20pin的,一个是10pin的呀只用到那个10引脚的排线就可以了,用不到20引脚的,一端对准mini开发板的jtag接口(位置位于usb接口的旁边十根排针处),另一端对准V8的侧面,十根排针的地方,插... 查看详情

编译u-boot时commandnotfound的解决方法(代码片段)

我使用的U-Boot版本是u-boot-2012.10,编译的步骤为cdu-boot-2012.10makes5p_goni_configsudomake然后,就会看到错误提示/bin/bash:arm-linux-gcc:commandnotfounddirname:missingoperandTry'dirname--help'formoreinformation.在arm-linux-gcc确认安装无误的前提下(可以... 查看详情

自己写bootloader——mini2440(初始化nandflash)(代码片段)

参考资料:https://blog.csdn.net/qqliyunpeng/article/details/51180276程序框架 /*定义寄存器*/#defineNFCONF(*((volatileunsignedlong*)0x4E000000))#defineNFCONT(*((volatileunsignedlong*)0x4E000004))#defineNFCMMD(*( 查看详情