Embedded System
文章平均质量分 80
钱德勒
Just for fun. And make a better life.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
u-boot启动代码分析一
1、在复位地址放置中断/异常向量表跳转到复位处理程序 2、复位处理程序 1) 设置CPU为SVC32模式 2) 关watchdog 3) 关中断及子中断 4) 初始化系统时钟 5) 点亮LED1 6) 简单设置SDRAM控制器 让SDRAM可以工作 7) 点亮LED2 8) 初始化串口并打印信息 9) 初始化CPU内原创 2016-08-08 09:30:49 · 369 阅读 · 0 评论 -
模拟指令断点
思路是利用trace指令替换目标断点地址的指令,单CPU执行到目标断点地址指令的时候触发一个trace异常。在trace异常处理里面处理断点。这样模拟方法优点是可以设置多个指令断点,不需要CPU额外的支持。数据断点通常是在CPU流水线的memory access阶段实施监控,如果地址吻合则触发数据断点。这个需要CPU硬件支持,不是所有CPU都支持。更强大的当然是gdb server了。但是将gdb原创 2016-08-08 09:33:11 · 354 阅读 · 0 评论 -
Nand ECC学习
Nand ECC校验和纠错原理及2.6.27内核ECC代码分析.pdf samsung_ecc_algorithm_for_256b.pdf samsung_ecc_algorithm_for_512b.pdf 内核代码已经实现了256Byte/3Byte和512Byte/3Byte ECC算法,现在芯片定义要搞204Byte/nByte,还不知道算法怎样实现。Goog原创 2016-08-08 09:33:13 · 1105 阅读 · 0 评论 -
一步成高手:终极图解内存(下篇)
http://www.qqread.com/pcbase/2007/04/c306543.html希望对大家有帮助,相信你看完就能成为高手了。 点击查看大图 DDR内存芯片的内部结构图,注意比较上文中SDRAM的结构图 这也是一颗128Mbit的内存芯片,标称规格也与前文的SDRAM一样为32×4bit。如日中天——DDR SDRAM(上)DDR SDRAM全称为Double Data Rate转载 2016-08-08 09:32:36 · 2828 阅读 · 0 评论 -
一步成高手:终极图解内存(上篇)
DDR基本忘光了,来个扫盲贴。http://www.qqread.com/pcbase/2007/04/c306549.html==========================《电脑高手》也都是一笔带过。作为电脑中必不可少的三大件之一(其余的两个是主板与CPU),内存是决定系统性能的关键设备之一,它就像一个临时的仓库,负责数据的中转、暂存…… 不过,虽然内存对系统性能的至关重要。作为电脑中必不转载 2016-08-08 09:32:33 · 2820 阅读 · 0 评论 -
MIPS CP0 Hazards问题--从Release1到Release2
关于的CP0 Hazards,官方定义是:Each instruction in the program sees the results of the previous instruction. There are some deviations to this model. These deviations are referred to as hazards.举个关中断的例子: mfc原创 2016-08-08 09:33:03 · 621 阅读 · 0 评论 -
MIPS架构培训之Cache原理
说明:来自培训讲稿,并隐去与公司系统软件相关部分内容。MIPS架构培训之Cache原理目的: 了解Cache原理、注意Cache一致性问题----直观影响:展示计算机系统存储层次结构图介绍局部性原理: 时间局部性:for() i 空间局部性:buf[i] buf[i+1] for (i = 0; i sum += buf[i++]; } su原创 2016-08-08 09:33:00 · 1245 阅读 · 0 评论 -
对付内存改写问题的银弹
内存改写问题一直是软件开发中最难搞的问题之一。在有虚拟地址空间管理的OS中,比如linux、windows等,应用程序出现内存改写最坏的情况是应用程序蹦掉而已,不会对系统造成很大危害。但是在没有虚拟地址空间管理的RTOS中,如果应用程序修改了系统核心内存整个系统就嗝屁了。如果软件工程真的有银弹,我首先要拿来对付内存改写问题。出现内存改写常见的原因有数据越界、野指针、不同类型指针之间的强制转换等。系原创 2016-08-08 09:32:56 · 738 阅读 · 0 评论 -
关于".set push"和".set pop"
在龙芯论坛搜到的。.set Sets (and clears) various flags that affect generated code. The following table may not be a complete list.Flagnoreorder Turns off reordering of instructions. When on, t.i原创 2016-08-08 09:31:30 · 616 阅读 · 0 评论 -
ucos ii在spca061a单片机上移植代码
08年ucos ii在spca061a单片机上的移植代码,给个csdn下载的链接,顺便刷一下csdn的积分,嘿嘿。http://download.youkuaiyun.com/source/589173 管理员在2009年8月13日编辑了该文章文章。 -->原创 2016-08-08 09:31:27 · 439 阅读 · 0 评论 -
喂狗超时问题分析
一般OS都是在系统调度定时器中区喂狗。外部看门狗一般是1s左右,调度通常是n ms,因此只要系统正常跑的时候外部看门狗都不会复位。 如果程序运行过程中外部看门狗复位了,一般是关中断时间过长或者关中断后进入死循环了。 关中断时间过长:开关中断通常是调用系统的接口函数。如果是存在关中断时间比较临界的情况,可以在调用开关中断的接口中挂钩子函数,统计每次关中断时间的长度。如果中断时间超原创 2016-08-08 09:31:24 · 2113 阅读 · 0 评论 -
mips代码段机制保护实现--运用MMU
在传统的RTOS中,所有程序共享同一个地址空间。就是说程序可以读写内存中的任意地址,包括代码段。查bug的时候如果怀疑是程序写了代码段导致的,可以通过MMU将代码段设置为只读。 简单起见假设代码段从0x10000(64KB)开始,代码段结束地址小于16MB。通常0x10000以下地址用于捕获空指针访问异常。1.修改ld文件,使代码段16MB对齐。2.在MMU初始化的时候将前16MB原创 2016-08-08 09:31:21 · 1277 阅读 · 0 评论 -
天使的翅膀--BCM5300X平台调试笔记
写这篇的时候正在听范范的“天使的翅膀”,我很喜欢的歌,就用它来做标题吧。 10月20到11月19日,bcm53003平台花一个月时间终于完成了。 大概情况如下1)bootloader 排除硬件CPU大小端配置错误后Bootloader一版起机,意料之中。--- 2)nandflash驱动 bcm53003的nandflash比较bt,现在local原创 2016-08-08 09:31:19 · 1262 阅读 · 0 评论 -
嵌入式的HelloWorld
最简单程序是点几盏LED灯,相对于C语言的Hello World吧。程序只能用汇编写而不能用C语言写,因为内存还没有初始化堆栈不能用(也有人拿cache当ram用的,那需要写更多的汇编代码就此排除)。编译工具只需要gcc就可以,不用Keil、ADS这些IDE。IDE隐藏了链接和加载过程,直接使用gcc可以更了解linker/loader。broadcom bcm4748 demo板上有gpio1/原创 2016-08-08 09:31:16 · 830 阅读 · 0 评论 -
74Kc mini_boot
最近在移植bcm4748的bsp,先弄了一个mini_boot。内容大概有初始化cp0、初始化I/D cache、初始化ddr2控制器、将代码搬到内存运行、初始化堆栈指针,然后跳到内存的c程序入口、初始化串口可以从串口打印及从串口接收数据,重新写一下写Makefile和ld script。现在还要继续完成bsp,有时间再将这个mini_boot贴出来。原创 2016-08-08 09:31:13 · 413 阅读 · 0 评论 -
Read MIPS Run2nd MIPS cache(转)
2008.9.28Read MIPS Run2nd MIPS cache激烈一些,没有cache的MIPS就不是RISC..... MIPS reset 后cache的大部分状态都是未定义的, 这也是bootstrap需要初始化cache的原因.Cache 和cache 管理L1 cache的重要作用就是在固定的时间内完成操作以使CPU的pipeline无间歇的运转. MIPS采用哈原创 2016-08-08 09:31:03 · 1602 阅读 · 0 评论 -
异常捕捉与反汇编分析
MIPS Exceptions有很多种,最常见的TLB(Miss/Invalid)、unaligned access。代码中NULL指针访是最常见的问题之一,通过将0地址附近(足够大)一段地址映射为Invalid。通过NULL指针对这段内存地址访问的时候就会触发TLB Invalid Exceptions。“足够大”要多大,要视系统最大结构体偏移地址而定,通常是4KB~64KB。如果访问地址超过了原创 2016-08-08 09:33:08 · 1080 阅读 · 0 评论
分享