blogernice

导航

文章分类 -  Boot

1

RTOS Magus CPU DDR Uart IIC SPI 中断 线程
u-boot之NAND启动与NOR启动的区别
摘要:u-boot之NAND启动与NOR启动的区别 nand启动与nor启动的区别主要分为以下几部分说明: 1、nand flash与nor flash的最主要区别 2、s3c2440的nand启动与nor启动原理 3、nand启动与nor启动的时候uboot做了什么 1、在JZ2440开发板上有两种Fl 阅读全文

posted @ 2021-06-27 21:44 blogernice

TrustZone
摘要:这篇文章源于老板想了解TrustZone,要求我写一篇文章简单介绍TrustZone的原理。既然是给领导看的,只介绍原理哪里够,因此也添加了公司自己现有TEE环境的设计、实现和发展,也顺带加入了一些题外话。也是因为要给领导看,所以文章也不能涉及太多技术细节,包括TrustZone模块的详细设计以及示 阅读全文

posted @ 2021-06-27 21:43 blogernice

ARM汇编:MRS和MSR指令
摘要:ARM汇编:MRS和MSR指令 ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。 一:下面先来说说状态寄存器 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative), Z(Zero), C(Carry), 阅读全文

posted @ 2020-10-19 14:50 blogernice

ARM汇编:汇编中IA、IB、DA、DB和FD、ED、FA、EA什么意思?
摘要:ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA, 两组中对应的指令含义相同。 IA:increase after ;表示数据传输后地址增加IB:inc 阅读全文

posted @ 2020-10-19 14:37 blogernice

详解 ARM Linux启动过程分析
摘要:本文以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 1、引 言 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(bootloader), Linux 内核,文件系统,应用程序。 其中 bootload 阅读全文

posted @ 2019-11-14 17:17 blogernice

bootloader简介
摘要:本文介绍了基于嵌入式系统中的 OS 启动加载程序Boot Loader 的概念、软件设计的主要任务以及结构框架等。一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmw 阅读全文

posted @ 2018-10-25 16:59 blogernice

maugs中1ms的实现
摘要:1ms的实现 hal_systimer_1ms = (hal_clock_cpu / 2000);除以2000的原因是: C0_COUNT 寄存器作为一个实时的定时器工作,每两个时钟周期增 1。所以hal_clock_cpu要准确,否则系统计时不准确. 系统时间的实现 在magus_sys_time 阅读全文

posted @ 2018-10-25 16:56 blogernice

uboot中usb storage启动方法
摘要:这种方法比较简单,就是利用uboot自带命令usbboot来实现启动,也算是最粗糙的一种。1.在配置文件中添加一系列有关USB的支持。uboot编译启动后输入usb startusbboot 0x30800000 0:1这里的0是usb设备0,1是第一分区当然,这里肯定会失败,因为usb stora 阅读全文

posted @ 2018-10-25 16:55 blogernice

SYSCALL functions available in MARS
摘要:SYSCALL functions available in MARS Introduction A number of system services, mainly for input and output, are available for use by your MIPS program. 阅读全文

posted @ 2018-10-25 16:53 blogernice

genstart 脚本学习
摘要:[cpp] view plaincopy #!/bin/bash cp -f $1/start.S . includeS=`grep "^#include.*\.S" $1/start.S` for i in $(echo $includeS | sed "s/#include //g" | tr  阅读全文

posted @ 2018-10-25 16:52 blogernice

内核启动命令行的传递过程
摘要:Linux 内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的 就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的 阅读全文

posted @ 2018-10-25 16:52 blogernice

start.s打印寄存器值的汇编实现
摘要:/*a0 = addrt2 = *(addr)t4 for right shift*/LEAF(print_reg) li t0,UART0_BASE_ADDR li t1,10 lw t2,0(a0) li t4,32 1: sub t4,4 move t3,t2 srl t3,t4 and t3 阅读全文

posted @ 2018-10-25 16:48 blogernice

PMON start.S 串口输出函数
摘要:串口输出东西太重要了,因此,再来仔细地看看串口调用的其它函数,这样做到一目了然,没有别的疑问在里面,就可以做到庖丁解牛游刃有余。像下面的函数:PRINTSTR(" CONFIG=")上面这句,就是输出一串字符到串里显示出来。其实它是一个宏定义,那么它是怎么样实现输出字符串到串口上的呢?立即去找到它的 阅读全文

posted @ 2018-10-25 16:46 blogernice

BootLoader概述
摘要:本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固 阅读全文

posted @ 2018-10-25 16:45 blogernice

u-boot的Makefile分析
摘要:U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一 阅读全文

posted @ 2018-10-25 16:44 blogernice

BSS段
摘要:BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic Assembly Program)中的一个伪指令,用于为符号预留一块内存空间。该汇编器由美国联合航空公司于20世纪50年代中期为IBM 704大型机所开发。后来B 阅读全文

posted @ 2018-10-25 16:43 blogernice

mips编译出的二进制文件怎么看?
摘要:PMON在编译之后,生成的二进制文件其实也是可以看懂的。 每32位(4个byte)组成一句mips汇编指令, 比如:3c08bf22 lui t0,0xbf22 用UE(或者linux下的hexedit)打开gzrom.bin,可以看到是反着排列的,即为 22 bf 08 3c。 如果想看往一个地址 阅读全文

posted @ 2018-10-25 16:42 blogernice

UBOOT源码分析及移植
摘要:本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网 阅读全文

posted @ 2018-10-25 16:40 blogernice

setup_arch函数分析
摘要:在文件 arch/arm/boot/compressed/head.S[2]中 start 为zImage 的起始点,部分代码如下:start:mov r7, r1mov r8, r2…...mov r0, r4mov r3, r7bl decompress_kernelb call_kernelc 阅读全文

posted @ 2018-10-25 16:40 blogernice

SRAM、DRAM、SDRAM的区别
摘要:为什么dram要刷新, sram不需要? 这个是由于ram的设计类型决定的,dram用了一个t和一个rc电路,导致电容毁漏电和缓慢放电。所以需要经常的刷新来保持数据。 DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器 阅读全文

posted @ 2018-10-25 16:39 blogernice

1