摘要:u-boot之NAND启动与NOR启动的区别 nand启动与nor启动的区别主要分为以下几部分说明: 1、nand flash与nor flash的最主要区别 2、s3c2440的nand启动与nor启动原理 3、nand启动与nor启动的时候uboot做了什么 1、在JZ2440开发板上有两种Fl
阅读全文
摘要:这篇文章源于老板想了解TrustZone,要求我写一篇文章简单介绍TrustZone的原理。既然是给领导看的,只介绍原理哪里够,因此也添加了公司自己现有TEE环境的设计、实现和发展,也顺带加入了一些题外话。也是因为要给领导看,所以文章也不能涉及太多技术细节,包括TrustZone模块的详细设计以及示
阅读全文
摘要:ARM汇编:MRS和MSR指令 ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。 一:下面先来说说状态寄存器 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative), Z(Zero), C(Carry),
阅读全文
摘要:ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA, 两组中对应的指令含义相同。 IA:increase after ;表示数据传输后地址增加IB:inc
阅读全文
摘要:本文以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 1、引 言 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(bootloader), Linux 内核,文件系统,应用程序。 其中 bootload
阅读全文
摘要:本文介绍了基于嵌入式系统中的 OS 启动加载程序Boot Loader 的概念、软件设计的主要任务以及结构框架等。一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmw
阅读全文
摘要:1ms的实现 hal_systimer_1ms = (hal_clock_cpu / 2000);除以2000的原因是: C0_COUNT 寄存器作为一个实时的定时器工作,每两个时钟周期增 1。所以hal_clock_cpu要准确,否则系统计时不准确. 系统时间的实现 在magus_sys_time
阅读全文
摘要:这种方法比较简单,就是利用uboot自带命令usbboot来实现启动,也算是最粗糙的一种。1.在配置文件中添加一系列有关USB的支持。uboot编译启动后输入usb startusbboot 0x30800000 0:1这里的0是usb设备0,1是第一分区当然,这里肯定会失败,因为usb stora
阅读全文
摘要:SYSCALL functions available in MARS Introduction A number of system services, mainly for input and output, are available for use by your MIPS program.
阅读全文
摘要:[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
阅读全文
摘要:Linux 内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的 就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的
阅读全文
摘要:/*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
阅读全文
摘要:串口输出东西太重要了,因此,再来仔细地看看串口调用的其它函数,这样做到一目了然,没有别的疑问在里面,就可以做到庖丁解牛游刃有余。像下面的函数:PRINTSTR(" CONFIG=")上面这句,就是输出一串字符到串里显示出来。其实它是一个宏定义,那么它是怎么样实现输出字符串到串口上的呢?立即去找到它的
阅读全文
摘要:本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 一、引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固
阅读全文
摘要:U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一
阅读全文
摘要:BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic Assembly Program)中的一个伪指令,用于为符号预留一块内存空间。该汇编器由美国联合航空公司于20世纪50年代中期为IBM 704大型机所开发。后来B
阅读全文
摘要:PMON在编译之后,生成的二进制文件其实也是可以看懂的。 每32位(4个byte)组成一句mips汇编指令, 比如:3c08bf22 lui t0,0xbf22 用UE(或者linux下的hexedit)打开gzrom.bin,可以看到是反着排列的,即为 22 bf 08 3c。 如果想看往一个地址
阅读全文
摘要:本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网
阅读全文
摘要:在文件 arch/arm/boot/compressed/head.S[2]中 start 为zImage 的起始点,部分代码如下:start:mov r7, r1mov r8, r2…...mov r0, r4mov r3, r7bl decompress_kernelb call_kernelc
阅读全文
摘要:为什么dram要刷新, sram不需要? 这个是由于ram的设计类型决定的,dram用了一个t和一个rc电路,导致电容毁漏电和缓慢放电。所以需要经常的刷新来保持数据。 DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器
阅读全文