- 博客(54)
- 资源 (2)
- 收藏
- 关注
原创 嵌入式Linux引导过程之1.6——Xloader的Xloader_Entry
--by FeCen 我们已经看完了XLOADER_ENTRY里调用的前两个标号的代码,分别是sys_init和ddr_init。对于一个嵌入式系统来说,这两个部分的代码是在一开始就执行的,至少是在从bootrom里面的firmware出来之后最初执行的代码,也是我们自己能够控制的最初的代码(在bootrom里面的firmware是在芯片出厂的时候就固化在芯片里面的了,一般情况下,我们是无法改变里
2008-10-20 17:10:00
2681
原创 嵌入式Linux引导过程之1.5——从BootRom到Xloader
--by FeCen在开始看Xloader_Entry的代码之前,我想先总结一下从芯片上电到开始运行Xloader的代码的过程,这是我目前理解的一个过程,可能有所出入,待以后继续完善。当系统上电之后,首先会将PC寄存器设置成BootRom里面的代码对应的一个地址。BootRom是芯片内部集成的一块很小的存储区,里面一般会固化一段启动代码。至于BootRom所占用的地址空间,每个芯片的定义可能会有所
2008-10-17 20:04:00
4362
原创 嵌入式Linux引导过程之1.4——Xloader的ddr_init
--by FeCen这里我们来看XLOADER_ENTRY中调用的第二个标号ddr_init处的代码,这部分代码的作用是对外部内存SDRAM进行初始化,在我spearplus开发板中,使用的是DDR SDRAM。在调用ddr_init之前,外部内存是不能用的,因为外部内存的时钟以及控制寄存器都还没有初始化,因此此时只有芯片内部的SRAM以及在sys_init的时候已经初始化了的Serial Fla
2008-10-17 14:28:00
3160
1
转载 国际:什么是程序员的优秀品质?
使用一种特殊的编程语言、编程很牛,单单靠这个并不能说一名程序员/开发者就是优秀程序员/开发者。 快速发展的开发环境使得这个行业比我今天看到的任何一个行业都要发展迅速,这既有积极的一面也有消极的一面:今天的程序员/开发者有很多编程语言、开发工具和开发平台可选,但是建立一个安全、可扩展的环境却变得难了很多;硬件和软件正日新月异地变得更加复杂,但现在学习新技术比过去要难太多了。 以下是优秀程序
2008-10-17 10:27:00
860
原创 嵌入式Linux引导过程之1.3——Xloader的sys_init
--by FeCen 上一篇文章对XLOADER_ENTRY进行了分析,看到其中调用的第一个标号就是sys_init,本文就对这个标号对应的代码段进行粗略的分析,这里我也还有好多没有搞明白的,就先留着,日后慢慢明白,先把自己目前能够看明白的东西记下来。另外,需要说明的是,像sys_init以及后续还要讲的ddr_init之类的代码是与体系结构高度相关的,由于我的文章针对的是SPEArPlus开发板
2008-10-16 17:14:00
2092
转载 一些有用的网站网址集合
国外 http://lwn.net/ http://www.tldp.org/ https://rhn.redhat.com http://www.justlinux.com/ http://www.linuxtoday.com/ http://www.linuxquestions.org/ http://www.fokus.gmd.de/linux/ http://www.li
2008-10-15 16:28:00
34612
原创 嵌入式Linux引导过程之1.2——Xloader的XLOADER_ENTRY
--by FeCen 根据上文中获得的线索,本文分析init.S中的XLOADER_ENTRY。在init.S中,定义了好多与平台相关的寄存器地址宏以及好多其他函数,我们在用到的时候再回过头来分析,这里,我们只看其中的一个函数(其实是一个标号,我们暂且称之为函数也无妨)——XLOADER_ENTRY。好了,废话不多说,来贴代码: 80 .global XLOADER_ENTRY 81 XLOADE
2008-10-14 15:59:00
2184
1
原创 嵌入式Linux引导过程之1.1——Xloader的xloader.lds
--by FeCen 本文中的所有代码版本都是基于ST的SpearPlus开发板的。xloader是在系统上电之后,执行完ROM中的frimware后最先开始执行的用户程序,它的体积很小,执行的功能也很简单,主要是对系统时钟以及外部SDRAM进行初始化,初始化完成之后就检查Flash中的uboot image是否准备好,如果准备好了就将Flash中的uboot image根据image heade
2008-10-14 14:00:00
4628
转载 ARM微处理器的指令系统
第3章 ARM微处理器的指令系统 本章介绍ARM指令集、Thumb指令集,以及各类指令对应的寻址方式,通过对本章的阅读,希望读者能了解ARM微处理器所支持的指令集及具体的使用方法。本章的主要内容有:- ARM指令集、Thumb指令集概述。- ARM指令集的分类与具体应用。- Thumb指令集简介及应用场合。3.1 ARM微处理器的指令集概述
2008-10-13 15:20:00
2013
转载 ARM微处理器系列
ARM 微处理器目前包括下面几个系列,以及其它厂商基于 ARM 体系结构的处理器,除了具有ARM 体系结构的共同特点以外,每一个系列的 ARM 微处理器都有各自的特点和应用领域。 - ARM7 系列 - ARM9 系列 - ARM9E 系列 - ARM10E 系列 - SecurCore 系列 - Inter的 Xscale - Inter的 StrongARM
2008-10-10 19:49:00
1931
原创 关于xloader和uboot的几个初级问题
在看代码的过程中遇到的几个问题,发邮件问了xf,得到了满意的回答,对xf表示感谢。这里将问题及答案记录下来,作为参考,蓝色的字体为xf给我的回答。 一、为什么需要xloader,xloader所做的工作为什么不直接就让uboot做,而要单独的分出来呢?我看了xloader的代码,非常短小,所做的工作也很简单,我说说我对代码的理解,不知道正不正确:在最初始的时候xloader首先对系统进行了初始化(
2008-10-10 17:15:00
10684
原创 对container_of的理解
--by FeCen 在学习Linux驱动的过程中,遇到一个很好玩的内核函数,准确的说是一个很好玩的宏,叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:439/**440 * container_of - cast a member of a structure out to the containing structure441 * @
2008-10-06 17:45:00
1131
转载 转贴:Linux内核的编译过程
通用的Linux内核编译过程我是在Debian上编译内核2.6.59.9,使用的软件包都是各发行版都有的(安装方法会不一样),所以在其他发行版上应该也可以,如果有测试通过或没通过的,麻烦哥们儿完事了在这吼一下,也方便大家嘛,谢过! 1、以普通用户(我这里的用户名是jtkk)登录系统,从http://kernel.org/下载最新的内核,下载地址是:http://www.hanwater.lka
2008-08-27 17:03:00
773
转载 Ajax教程地址
第 1 部分: Ajax 简介 Ajax 由 HTML、JavaScript、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成
2007-12-11 23:26:00
688
原创 几个排序算法源码
插入排序InsertionSort.h#ifndef __INSERTIONSORT_H_FE#define __INSERTIONSORT_H_FE// 插入排序void insertion_sort(int *a, int len);#endifInsertionSort.cppvoid insert_item(int *a, int max_index, int it
2007-12-09 15:57:00
1540
2
原创 哈夫曼编码算法
huffman.h#ifndef __HUFFMAN_H_FE#define __HUFFMAN_H_FE// 哈夫曼树的节点结构typedef struct _huff_node ...{ float weight; // 节点权重 int lchild; // 节点的左孩子 int rchi
2007-12-09 15:34:00
16632
2
原创 一个折磨了我一个星期的问题
最近在做Skype的二次开发,可是在最初就遇到了一个令我头疼的问题。具体情况很难说,除非你跟我一样做过关于Skype的开发。当我试图连接Skype客户端的时候,Skype能够顺利地返回给我控制句柄。可是当我接收并保存该句柄之后,想要再次通过它给Skype发送命令的时候却总是失败,看起来就好象连接已经中断。找了很久的问题,确定接收消息的OnSkypeControlAPIAttach没有问题,确定On
2007-03-27 16:25:00
1413
原创 自动滚动换行
想实现这样一个简单的功能,即在一个CEdit里面,显示一些时事的状态信息,并使信息实现自动滚动换行。将CEdit的属性设置成MultipleLine, Vertical Scroll, AutoVScroll, ReadOnly, Want Return。然后,在需要增加新的显示信息的时候:m_strMsg += msg + _T("/r/n"); //回车是"/r/n
2007-03-16 15:58:00
1402
原创 关于VC中的自定义消息
最近开始做毕设,又拿起了不生不熟的VC。呵,边学边做嘛。前几天碰到了一个问题,今天解决了,虽然是一个小问题,但也走了不少弯路,所以把它记下来。是关于自定义消息的。在VC中,处理自定义的消息主要有以下一个步骤:1. 定义自己的消息2. 在头文件中,申明相应的消息处理函数3. 在源文件中添加自定义消息的消息映射宏4. 编辑消息处理函数具体说来,自定义消息主要有两种方式,
2007-03-16 11:06:00
1593
原创 编译原理实验四——算符优先文法语法分析
[实验任务] 1、实现算符优先分析算法。2、完成以下描述算术表达式的算符优先文法的算符优先分析过程。G[E]:E→E+T∣E-T∣T T→T*F∣T/F∣F F→(E)∣i说明:终结符号i为用户定义的简单变量,即标识符的定义。 [设计要求]1、构造该算符优先文法的优先关系矩阵或优先函数;2、输入串应是词法分析的输出二元
2006-06-02 17:17:00
17714
原创 操作系统实验三——页面替换算法的比较研究
在本实验中,引用串的长度为100000个,生成方法为按照给定的指令跳转率随即生成,指令跳转率由调用函数给出。由于指令的跳转率对最终的各种替换算法的缺页率有明显的影响,所以,在实验中,我用一组不同的跳转率来测试在不同指令跳转条件下不同算法的缺页率。另外,实验中使用的内存的页面数为10,虚拟存储器中的页面总是为100。 以下是程序中定义的一些数据结构和函数原形:#define STRE
2006-06-02 09:50:00
3749
2
原创 编译原理实验三——语法分析(递归下降法)
[实验任务] 完成以下描述算术表达式的LL(1)文法的递归下降分析程序G[E]: E→TE′ E′→ATE′|ε T→FT′ T′→MFT′|ε F→ (E)|i A→+|- M→*|/ 说明:终结符号i为用户定义的简单变量,即标识符的定义。[设计要求]1、 输入串应是词法分析的输出二元式序列
2006-05-31 22:18:00
13625
3
原创 编译原理实验二——语法分析(预测分析)
[实验任务]1、实现LL(1)分析中控制程序(表驱动程序);2、完成以下描述算术表达式的LL(1)文法的LL(1)分析程序(LL(1)分析表见教材)。G[E]: E→TE′ E′→ATE′|ε T→FT′ T′→MFT′|ε F→ (E)|i A→+|- M→*|/ 说明:终结符号i为用户定义
2006-05-31 19:52:00
11991
原创 编译原理实验一——简单词法分析
[实验任务] 完成以下正则文法所描述的Pascal语言子集单词符号的词法分析程序。→字母︱ 字母︱ 数字 →数字︱ 数字 →+ ︱- ︱* ︱; ︱(︱) →=︱=︱>︱=︱* →→=→> →: →/该语言的保留字 :begin end if then else for do while and or not 说明: 1 该语言大小写不敏感。
2006-05-31 19:48:00
13844
8
原创 OpenGL初探
这学期有一门课是计算机辅助造型与设计,OpenGL是其中的一小块。前几天刚刚开始试着去使用OpenGL,参考资料是NeHe OpenGL。最初,没有原版的资料,看的是CKER翻译后的版本,但是看着总是没有原版的明白。所以,今天找来了原版,虽然是英文的,但写得非常浅显,很容易阅读。已经看到了Lesson4,把到目前为止的一些心得写一下,给自己,也给那些跟我一样刚开始学习OpenGL的朋友们。首先
2006-05-25 17:28:00
2544
原创 操作系统实验二——内存平均利用率与分配策略的研究
参考windows任务管理器中内存占用的情况,在256M的总内存中,各个进程所占的内存从几十K到几十M不等,基本可以看成是均匀分布。即,每个进程申请使用的内存占总内存的百分比比较接近实际的数据为从千分之几到百分之十几,在这里,我们取从0.02%到15%。 但是为了说明情况,在实验中,我将申请内存占总内存的比率分为六个区间,分别为:0.02%——2%,0.02%——8%,0.02%
2006-05-22 12:10:00
3470
3
原创 操作系统实验一——模拟进程调度时间片轮转算法
本程序用于模拟进程。总体思路为:用一个调度线程来模拟操作系统的调度进程,用一个线程来模拟一个进程。于是,对应于每一个被模拟的进程,都有相应的线程来模拟,并在调度线程的调度下,实现时间片轮转的调度算法。具体实现:PCB块的数据结构:typedef struct PCB { int id; char name[20]; int status; int ax, bx, cx, dx; int pc; i
2006-05-21 13:50:00
16503
3
原创 两天两夜
前天睡了两个小时,昨天睡了四个小时。嗯。不错,终于完成了!刚起来,想要洗漱的时候忽然发现没有牙膏了。听说正在拔河,拖着疲惫的身子跑去看看,顺便买牙膏。没想到居然让我拔河,拔就拔吧,虽然没吃饭,没睡觉,头发晕。没有洗漱,披头散发,管它呢。呵,大侠说我的发型像爱因斯坦。昨天问大侠jdg是谁?呵,她告诉我她不认识jdg,但知道jcg,是她男朋友。嗯,又一个幸福的朋友。我想她一定很奇怪吧,奇怪我怎么会知道
2005-11-28 15:09:00
1306
4
原创 发现一个好地方
五道口,耶!真是一个不错的地方,昨天才发现。呵,第一次和韩国人说话,虽然只会一句“阿尼哦阿塞呦”。第一次遇到那么多的韩国人,第一次看到那么多的韩国店铺和韩国商品。真不错,谢谢两号。呵。还去科大了,提科大主要是由于那一阵迎接我们的树叶雨。在大风中,漫天的树叶,比雨点还密集地向我们斜斜的飞来,好有感觉。大风过后的小道上,厚厚的一层树叶。打过树叶仗么?哈哈。昨天,很开心。呵。
2005-11-21 22:55:00
1176
原创 第一次
第一次,女生在我面前流泪,不是为了我。想说些什么,可自己都一塌糊涂的我又能说什么呢。只能尽量试着去安慰她。她说想喝酒,却又说啤酒太难喝,哎,女人啊。于是,倒过来了,倒是我在那里一个劲的灌酒。那,问一个问题,你说一个人会不会同时爱上两个人呢?我回答不上来。但至少,我没有过。当我爱着她的时候,我只爱她。当我爱上另一个人的时候,我已经不爱她了。不是么?你们说当一份感情无法挽回的时候,还要坚持么?坚持就代
2005-11-14 18:10:00
1338
2
原创 她很好
这是这20天来我所得到的第一个也是唯一一个跟她有关的消息。嗯,谢谢齐瑛。虽然我不知道你是谁。阿姨?姐姐?妈咪?或者妹妹?呵,或者只是一个陌生人而已。或者,你都不知道她是谁,只是出于好心。不管怎样,谢谢齐瑛。她很好,我相信。
2005-11-12 18:51:00
1296
3
原创 光棍节,呵,好吧
又是一个光棍节。呵,虽然不是什么正式的节日,我也从来就把它当成一个玩笑,但即使是这样,总觉得今天还是有点特别。为了庆祝大学里度过的第三个属于我的节日,今天在FullHouse里留下了好多东西。多数都是关于技术的。本就该这样。自从那天,决定把关于她的一切从我身边剥离开的时候起,空虚的我开始每天找女生一块儿自习,没有什么目的,只是,和女生在一起或许能够少想她一点。呵,我想她们也是知道的。真地想说,谢谢
2005-11-11 20:41:00
1063
2
原创 一个用Dijkstra算法实现的路由算法的java程序——9 图信息文件示例
图信息文件一 CityGraph.txtNodeNum = 25Node0 = (1,242)Node1 = (0,242)(2,305)Node2 = (1,305)(3,397)(4,704)Node3 = (2,397)Node4 = (2,704)(5,674)(14,137)Node5 = (4,674)(6,651)(13,349)Node6 = (5,651)(7,82
2005-11-11 20:06:00
2273
2
原创 一个用Dijkstra算法实现的路由算法的java程序——8 GraphMain类
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.Vector;/** * 程序入口所在类。实现程序主窗口的控制以及对其他类及窗口的控制。 * @author Fe */public class GraphMain { /** * 程序中图的邻接表的引用。 */ GraphFromFi
2005-11-11 19:33:00
5060
原创 一个用Dijkstra算法实现的路由算法的java程序——7 GraphShowAdv类
import javax.swing.*;import java.awt.*;import java.awt.event.*;/** * 用于显示两点间所有最短路径以及最短路径子图的Dialog。 * 继承自GraphShow。 * @author Fe */public class GraphShowAdv extends GraphShow { JPanel checkPanel = new
2005-11-11 19:30:00
1953
原创 一个用Dijkstra算法实现的路由算法的java程序——6 STDijkstraAdv类
import java.util.Vector;import java.util.StringTokenizer;/** * 这是一个点对点(S-T)Dijkstra算法的改进。用于求两点间的所有最短路径。 * * @author Fe */public class STDijkstraAdv { /** * 所求路经所在图的邻接链表引用。 */ GraphAdjList graphAdjL
2005-11-11 19:28:00
2082
原创 一个用Dijkstra算法实现的路由算法的java程序——5 GraphShow类
import java.awt.*;import javax.swing.*;import java.awt.event.*;/** * GraphShow通过控制地图的显示以及和主窗口的联系来充当地图显示与主窗口的桥梁。 * @author Fe */public class GraphShow { GraphFromFile graph = null; /** * 容纳地图显示的Dialog
2005-11-11 19:22:00
1833
原创 一个用Dijkstra算法实现的路由算法的java程序——4 MapCanvas类
import java.awt.*;/** * 一块实现地图绘制的画布。此画布添加到地图显示窗口中。 * @author Fe */public class MapCanvas extends Canvas { GraphFromFile graph = null; /** * 图中结点的数目。 */ int nodeNum = 0; /** * 图的邻接表引用。 */ GraphAdjL
2005-11-11 19:19:00
2255
原创 一个用Dijkstra算法实现的路由算法的java程序——3 STDijkstra类
/** * 这是一个点对点(S-T)Dijkstra算法的具体实现。用于求两点间的最短路径。 * @author Fe */public class STDijkstra { /** * 所求路经所在图的邻接链表引用。 */ GraphAdjList graphAdjList[] = null; /** * 图中总的结点数。 */ int totalNodeNum; /** * 源结点和
2005-11-11 19:16:00
1997
原创 一个用Dijkstra算法实现的路由算法的java程序——2 GraphFromFile类
import java.io.*;import java.util.*;import javax.swing.JOptionPane;/** * 类GraphFromFile用于从文件读入图的信息。 * 包括:图的结点个数及其邻接关系、图中边的权值、图中结点显示的位置坐标 * 以及各结点对应的名称。 * * 其中有关图的邻接表文件的格式为: * * * [Graph] * NodeNum =
2005-11-11 19:12:00
1883
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人