
BootLoader(PMON、uboot、Magus)
文章平均质量分 56
专注嵌入式
喜欢LINUX、嵌入式、driver、kernel,寻找志同道合的朋友
展开
-
HS37K VDDR与MDDR转换
1.板子相关:prj/test/bsp_devices.h#define APB_CLOCK 40000000 //需要根据bitfile的配置来配置apb clock#define UART_CLOCK 27000000 //需要根据板子上的晶振来配置uart clock2. MDDR切换到VDDR方法:在prj/test/Makefile中:转载 2014-12-10 09:43:31 · 1569 阅读 · 0 评论 -
warning: target CPU does not support interworking 解决办法
warning: target CPU does not support interworking 解决: 一看就知道是跟CPU有关,到u-boot根目录下执行 #vi "cpu/arm920t/config.mk" 把 PLATFORM_CPPFLAGS += -march=armv4 改成 PLATFORM_CPPFLAGS += -march=ar转载 2013-08-17 10:31:01 · 2090 阅读 · 1 评论 -
uboot源码下载
uboot源码所有版本的u-boot源代码压缩包都可以在ftp://ftp.denx.de/pub/u-boot/下载。关于u-boot源代码的信息,看http://www.denx.de/wiki/U-Boot/SourceCode转载 2013-08-14 10:33:05 · 901 阅读 · 0 评论 -
uboot源码下载
uboot源码所有版本的u-boot源代码压缩包都可以在ftp://ftp.denx.de/pub/u-boot/下载。关于u-boot源代码的信息,看http://www.denx.de/wiki/U-Boot/SourceCode转载 2013-08-14 10:33:36 · 784 阅读 · 0 评论 -
于关u-boot中的.balignl 16,0xdeadbeef的理解
原文http://haoyeren.blog.sohu.com/84511571.html最近在分析u-boot的源代码,看到这一行:.balignl 16,0xdeadbeef不理解了,不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?然后在查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄明白.balignl的意思转载 2013-08-26 10:22:22 · 804 阅读 · 0 评论 -
ARM指令集与Thumb指令集的区别
一、现在先区分下ARM指令集与Thumb指令集 Thumb 指令可以看作是 ARM 指令压缩形式的子集,是针对代码密度的问题而提出的,它具有 16 位的代码密度但是它不如ARM指令的效率高 .Thumb 不是一个完整的体系结构,不能指望处理只执行Thumb 指令而不支持 ARM 指令集.因此,Thumb 指令只需要支持通用功能,必要时可以借助于完善的 ARM 指令集,比如,所有异常转载 2013-08-11 15:47:20 · 2618 阅读 · 0 评论 -
ARM处理器模式切换(含MRS,MSR指令)
除了用户模式和系统模式,其余模式下都有一个私有SPSR保存状态寄存器,用来保存切换到该模式之前的执行状态,之所以用户模式和系统模式没有SPSR是因为,通常CPU大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存用户模式下的状态,当切换回原先模式时,直接回复SPSR的值到CPSR就可以了,因此,用户模式和系统模式下不需要SPSR,其详细操作查看下节异常处理。转载 2013-08-09 20:22:41 · 1408 阅读 · 0 评论 -
ARM指令集
ARM指令集www.hxhack.com 阅读: ------------------------------------------------------------------ 特点:Load / Store结构(存储器操作仅包括load和store,所有其他操作在寄存器中完成)32位固定指令宽度3地址指令格式(即两个源操作数和结果寄存器都独立指定转载 2013-08-09 19:33:24 · 1037 阅读 · 0 评论 -
uboot详细解读
大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其转载 2013-08-09 15:44:47 · 1368 阅读 · 0 评论 -
busybox编译
由于我的系统中缺少ncurses.h头文件,所以必须首先下载与之有关库 sudo apt-get install libncurses5-dev libncurses5-dbg libncurses51.下载busybox-1.21.0.tar.bz22.make menuconfig3. Busybox Settings ---> Build转载 2013-08-09 14:41:43 · 898 阅读 · 0 评论 -
ldr指令详解
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。(1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR 伪指令用于加载立即数或一个地址值到指定寄存器.*如果name是立即数的话:LDR R0,=0X123;//将0X123存入R0 *如果name是个标识符:LDR R0,=NAME;//将NAME的地址存入R0转载 2013-08-08 10:11:21 · 2038 阅读 · 0 评论 -
uboot main_loop分析
1。main_loopcommon/main.c main_loop又臭又长,去掉宏注释掉的部分就只剩下一点点了。如下: void main_loop (void){#ifndef CONFIG_SYS_HUSH_PARSER static char lastcommand[CONFIG_SYS_CBSIZE] = {转载 2013-08-07 14:14:08 · 889 阅读 · 0 评论 -
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,0xf blt原创 2013-08-06 16:11:30 · 2274 阅读 · 0 评论 -
利用tmux为板子开多个终端
优化性能时,时常要一直开着top,显示资源的使用状况,而同时又要有一个终端来操作一些命令。以前用telnet开多个终端,这种方法需要网络比较麻烦。也可以用tmux来为板子开多个终端,如下:tmux --- terminal mutiplexer类似screen。可以detach 会话,然后需要的时候再attach。转载自:https://wiki.freebsdchin转载 2013-08-06 09:58:05 · 1735 阅读 · 0 评论 -
uboot中对.balignl和0xdeadbeef的理解
通过查看uboot源码顶层目录下的链接脚本u-boot.lds:点击(此处)折叠或打开OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{. = 0x00000000;. = ALIGN(4);.te转载 2013-08-06 13:20:56 · 2197 阅读 · 0 评论 -
uboot的gd_t和bd_t数据结构
gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。分别定义在./include/asm-arm/global_data.h和 ./include/asm-arm/u-boot.h1、gd_t : global data数据结构定义,位于文件 include/asm-arm/global_data.h。其成员主要是一些全局的系统初始化参数转载 2013-09-05 16:29:13 · 1015 阅读 · 0 评论 -
HS3K PMON网卡驱动测试
1.编译新的pmon4hisense_net_ok2.将pmon下载到HS3000板子中,从SPI_Flash启动。3.ifconfig lakers0查看一下IP4.ifaddr lakers0 192.168.1.1115.将HS3000板子与PC通过网线连接。6.在PC上运行pingtester软件,测试丢包率。 注:如果ping不通的话,可以通过ifdown转载 2012-02-22 12:42:23 · 978 阅读 · 0 评论 -
BIN文件反汇编方法
objdump -D -b binary -m mips xxx.bin > xxx.dis转载 2015-06-15 16:23:01 · 16751 阅读 · 5 评论 -
地址过滤窗口
地址过滤窗口LS232IP为提升性能采用了推测执行技术,因此位于错误推测路径上的取指操作和取数操作都可能产生程序员不可控的处理器接口总线访问地址。另一方面,在一些系统中,存在一些设备包含有会引起系统死机的地址空洞。当错误推测路径引发的不可控地址恰好落在这些地址空洞的范围内,就会引起系统的死机。为解决该问题,LS232IP提供了地址过滤窗口机制。该机制保证落在地址过滤窗口内的地址访问永远不会出现转载 2015-06-09 20:35:25 · 904 阅读 · 0 评论 -
BSS段、数据段、代码段、堆与栈
BSS段、数据段、代码段、堆与栈Posted on 2009-08-17 13:46 Prayer 阅读(9511) 评论(1) 编辑 收藏 引用 所属分类: C/C++ 、LINUX/UNIX/AIX BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内转载 2015-03-30 11:33:04 · 865 阅读 · 0 评论 -
C语言中printf("built: %s %s",__TIME__,__DATE__);方便调试
C语言中printf("built: %s %s",__TIME__,__DATE__);方便调试代码中加入printf("built: %s %s",__TIME__,__DATE__);这样就可以了;后面将显示最后编译的时间。这样可以知道自己改的代码是否生效,是否编译进去。转载 2014-12-10 16:35:15 · 1810 阅读 · 0 评论 -
mips如何reset :hal_soc_reset函数
/************************************************************************** * Description * Reset chipset and reboot main CPU. This function will never return. * * Parameters * Void转载 2014-12-09 09:54:18 · 1464 阅读 · 0 评论 -
CPU GPR与CP0寄存器汇编宏函数-读写
#define STR(x) #x#define mips_get_gpr_register(source) \({ int __res; \__asm__ __volatile__(\".set push;"\".set reorder;"\"move %0, "STR(source)";"\".set pop"\: "=r" (__res转载 2014-12-08 08:51:01 · 2423 阅读 · 0 评论 -
maugs行1ms分辨率的实现
1ms分辨率的实现====hal_systimer_1ms = (hal_clock_cpu / 2000);除以2000的原因是: C0_COUNT 寄存器作为一个实时的定时器工作,每两个时钟周期增 1。所以hal_clock_cpu要准确,否则系统计时不准确. 系统时间的实现====在magus_sys_timer中,利用timer_lsr_id中断调用实现转载 2014-12-08 14:38:45 · 1027 阅读 · 0 评论 -
转载:Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
转载:Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7) 2013-12-31 15:51分享到: Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递转载 2014-10-29 18:31:51 · 1224 阅读 · 0 评论 -
常用 U-boot命令详解
常用 U-boot命令详解 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ ver转载 2014-09-03 14:38:16 · 1986 阅读 · 0 评论 -
向UBOOT中移植代码总结
1.首先,将要移植的代码目录(如bootpicsnd)整个拷贝到UBOOT工程中,最好放到对应的board目录下。2.在bootpicsnd目录里,新建一个Makefile,参考如下:## (C) Copyright 2000-2007# Wolfgang Denk, DENX Software Engineering, wd@denx.de.## See file CRE原创 2014-09-16 16:16:42 · 1540 阅读 · 0 评论 -
uboot中usb storage启动方法
这种方法比较简单,就是利用uboot自带命令usbboot来实现启动,也算是最粗糙的一种。1.在配置文件中添加一系列有关USB的支持。uboot编译启动后输入usb startusbboot 0x30800000 0:1这里的0是usb设备0,1是第一分区当然,这里肯定会失败,因为usb storage中还没有必须的内核文件呢。2.usbboot是从指定分区的起转载 2014-09-03 10:12:01 · 6731 阅读 · 0 评论 -
U-Boot添加menu命令的方法及U-Boot命令执行过程
下面以添加menu命令(启动菜单)为例讲解U-Boot添加命令的方法。(1) 建立common/cmd_menu.c 习惯上通用命令源代码放在common目录下,与开发板专有命令源代码则放在board/目录下,并且习惯以“cmd_.c”为文件名。(2) 定义“menu”命令 在cmd_menu.c中使用如下的代码定义“menu”命令:转载 2014-07-04 14:39:24 · 2013 阅读 · 0 评论 -
不同型号对应更改pmon配置文件?
1.LED32A300J:32inch,分辨率1366*768,倒屏,######## for fast boot 20130502################option __PRINT_DEBUG_INFO__ option REVERSE_SCREEN ###32' 42' open 39' close option OSD_1368768 ####1360*76转载 2013-09-30 14:04:36 · 1427 阅读 · 0 评论 -
HS3K调试过程经验总结
1.板子一直在ERR状态,可能跟板子的电源有关,也有可能是SPI_Flash中的pmon有问题。解决办法:http://blog.youkuaiyun.com/sdustliyang/article/details/72665642.出现-785的错误,检测网线连接、EJTAG连接,如果还有问题的话重启ICE2(这是ICE2固有的毛病,在网线断开一段时间后,再连虽能ping通,但是不能工作,重启一下便原创 2012-02-17 16:32:30 · 1030 阅读 · 0 评论 -
arm mvn 指令
mvn:与mov指令用法差不多,唯一的区别是:它赋值的时候,先按位取反 eg1: mvn r0,0xa0000007 执行结果:r0=0x5ffffff8 eg2: mvn r0,#4执行结果:r0=-5 过程分析:先对4转换成2进制(00000100),取反(11111011),求其补码,因为是负数,所以先对其正数(01111011)求转载 2013-08-05 13:44:39 · 12268 阅读 · 4 评论 -
ARM LR寄存器
MOV PC,LR看下面这个ARM汇编吧BL NEXT ;跳转到子程序......... ;NEXT处执行NEXT..........MOV PC,LR ;从子程序返回这里的BL是跳转的意思,LR(R14)保存了返回地址PC(R15)是当前地址,把LR给PC就是从子程序返回这里有一下总结首先1.SP(R13) LR(R14)PC(R15)2.lr转载 2013-08-05 09:52:35 · 1004 阅读 · 0 评论 -
PMON的编译和使用
http://blog.youkuaiyun.com/hyfly2005/article/details/3254570转载 2012-02-28 22:38:42 · 1186 阅读 · 0 评论 -
pmon makefile分析
http://blog.youkuaiyun.com/hyfly2005/article/details/3254574转载 2012-02-28 22:37:46 · 755 阅读 · 0 评论 -
SPI_Flash中的PMON可能会影响CPU
在向SPI_Flash中下载pmon时,一定要确定该pmon对CPU的初始化是正确的,不然可能会出现重启后板子无法使用的假象,甚至EJTAG都无法连接,原因是板子上电以后,会默认从SPI_Flash中启动,如果SPI_Flash中的PMON将CPU初始化错误,则无法连JTAG。此时的唯一办法就是将SPI_Flash擦掉。 擦SPI_Flash的方法:1. CPU旁边有个电容,先in原创 2012-02-17 09:46:00 · 1643 阅读 · 0 评论 -
区别几个常用的地址
0x80000000 虚拟地址,对应内存起始地址0xa0000000 虚拟地址,也对应内存起始地址0x80010000 pmon链接时指定的首地址,若想下到0x8a000000时, 需要将offset设置成0x8a000000-0x80010000=0x9ff0000/////////////////////???原创 2012-02-22 13:08:41 · 1148 阅读 · 0 评论 -
PMON中autoload自动加载操作系统代码分析
龙芯BIOS的最终目的,还是需要加载一个更好的操作系统。当你在启动时不按下任何按键,pmon就会自动地加载缺省设置的操作系统。它的实现代码如下:#ifdef AUTOLOADs = getenv ("al");autoload (s);#elses = getenv ("autoboot");autorun (s);#endif上面先从al参数里读取缺省设置的操作系转载 2012-02-26 16:05:42 · 1581 阅读 · 0 评论 -
PMON详解
http://xenyinzen.wikidot.com/loongson-about+++++++++++++++++++++++++++++++++++++++++PMON-V1.1 目录结构+++++++++++++++++++++++++++++++++++++++++pmon的目录结构大致如下(由linux工具tree生成).|-- Targets转载 2012-02-26 16:49:40 · 23233 阅读 · 0 评论 -
《See MIPS Run》读书笔记
这里面写的是我研读《See MIPS Run Linux》这本书时的一些读书笔记,对书上的一些疑点有比较详细的阐述。还算草稿性质,比较乱,以后有时间再来整理:)*现在MIPS世界指令集统一标准为MIPS32/64 R1和R2(Release 2),不再沿用以前所谓的R4K, R24K等芯片命名方式和MIPS I, II, III, IV, V这种指令集方式。*MIPS指令特点:1。所有转载 2012-02-26 17:10:04 · 1400 阅读 · 0 评论