在学校的时候,好好享受自尊的感觉。有人说,他读大学的时候,以为他毕业后要变成一条狗只需要3年的时间,但是工作后,他发现对自己真是太不自信了,其实 要变成一条狗根本不用3年,半年就足够了。这话是我大4时看见的,过了2年后,我发现这条伟大真理完全可以和牛顿定律媲美。我们在大学里,享受的是中国最 大的自由和民主,这是个可怕的甜蜜。因为当你第一次受到指着鼻子的责骂时你一下子无法接受。 还在学校的
这几天,组织部门内的小组学习,每个人上台40分钟。讲讲工作中的遇到的问题和解决方法,同事们的题目也是五花八门。有的讲测试,有的讲需求,特别的有个 同事讲了《google搜索引擎的入门到精通》。很多同事感觉到这个题目耳目一新,着实让我有些意外。google搜索引擎像什么 filetype和site关键字的用法啊,好几年前就可以用了。为什么有些同事到今天才知道。这不禁让我想起了曹先生说的:&ld
所谓理想,不过是用自己的骨头熬的一锅靓汤...
2010年转眼就要结束了,看着自己工作的地方,不禁感慨。想起当年进这家公司时候的样子,再看看今天的样子,变化是巨大的。 刚来的时候,研发部门加上我一共就7个人,现在光光我的部门就十几个人。公司也在慢慢状大,慢慢发展。然而这一切并为给我带来喜悦,尽管很大程度上这也是我的工作成果体现。表面上的大,并未带来质的飞跃,这让我不禁感慨,这么折腾为什么…… 在 我毕业
RTEMS 4.9.4 进入 boot_card 函数即开始全面的初始化。 boot_card函数是~RTEMS~提供的一个通用初始化框架,不论在何种处理器上,都是使用这个框架为系统做初始化的工作。 它最大程度上复用了代码,也保证了所有的初始化动作尽可能用~C~语言撰写。它完成的工作按顺序罗列如下: 初始化执行环境,主要是关闭中断并处理~boot_c
从我开始接触 RTEMS 开始起,已经快有两年了。两年几乎将RTEMS核心源代码看了个遍,但有些地方总觉得理解的不透彻。所以干脆把自己写的代码分析贴出来,让广大爱好RTEMS的朋友批评指正。 我只对ARM和x86的CPU稍微熟悉些,x86一般不是嵌入式的首选,一般都是选ARM,RTEMS4.9.4目前是OAR官方RELEASE的最高版本。我就分析RTEMS4.9.4的代码,以CS
启动代码是应用程序中最先被执行的代码,初始化处理器和单板,使之可以执行接下来的~BSP~代码。 启动代码一般都是由汇编语言写成。为了使~C~语言多做一些初始化工作,并使整个初始化代码变得更易维护, 应尽量减少汇编语言的使用,只做一些必要的工作。 这些工作包括: 1 禁用所有可屏蔽中断; 2 用~0~填充未初始化数据段~.bss; 3 初始化~C~程序调用栈; 4 从~ROM~
RTEMS 4.9.4 filesys.pdf 3 Mounting and Unmounting Filesystems 3.1 Mount Points 下面是一个挂载点的特性列表: 挂载点必须是一个目录。它的下面可能有文件和其他目录。当文件系统被挂载以后这些文件和目录将被隐藏; 任务必须具有对挂载点的读/写/执行权限,否则挂载尝试将被拒绝; 一个文件系统只可以被挂载到一个挂载
RTEMS 4.9.4 filesystem.pdf 2 System Initialization RTEMS~初始化后执行应用程序初始化。 初始化部分有对~rtems_filesystem_initialize()~进行调用。 这个程序将挂载内存文件系统~(In Memory File System, IMFS)~作为基础文件系统。 挂载基本文件系统包
RTEMS 4.9.4 filesystem.pdf 1 Pathname Evaluation 本章介绍了~RTEMS~文件系统的路径评估过程。 %XXX包含路径的评估过程中的图示 1.1 Pathname Evaluation Handlers 有两个路径评估程序。处理程序~patheval()~用来查找,核实权限,并且返回存在节点的信息。 处理程序~e
现代计算机中内存空间都是按照字节~(Byte)~划分的。从理论上讲似乎对内存的访问可以从任何地址开始,但现实是存储在某些特别地址上的数据需要多次访问, 经过特殊处理后才能访问到。为了提高访问速度,需要数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是字节对齐~(Byte alignment)。 各个硬件平台对存储空间的处理是不同的。一些平台对某些特定类型的数据只能从某些特
任务~(Task)~不是所有操作系统里都有的概念。常见的实时操作系统,如~uC/OS-II、 FreeRTOS、RTEMS~中是有这个概念的。这些操作系统有一个共同的特点,即用户 的应用程序和操作系统作为一个执行体运行在目标系统上。这里的执行体(Executive)指的是用户代码和操作系统代码编译在一起形成的 可执行文件。一般的操作系统中如~Linux、Windows~中,是没有这个概念的。
在计算机领域,堆栈是一个不容忽视的概念,只要编写程序都要用到。对于很多的初学着来说,堆栈却是一个很模糊的概念。 栈~(Stack)~在数据结构中是一种线性表,特点是先进后出~(First In Last Out,FILO)。数据结构/footnote{严蔚敏版《数据结构》}中出现堆~(heap)~的地方只有 堆排序算法。程序员口中的堆栈是存储代码中数据的方式方法,栈和数据结构中的“
内核编译成功后,下一步我们就开始弄Hello World,完成这个工作,首先我们去官方网站下载测试程序包。 http://www.rtems.org/ftp/pub/rtems/4.9.4/class-examples-4.9.4.tar.bz2 解压缩,以后我们进入 class-examples-4.9.4 的文件夹。 输入以下命令 cd hello_wo
到这里,代码部分就修改完毕了,还需要修改该的就是Autotools的宏和链接脚本。 为了宏生成速度快,我把其他所有无关的BSP全部删除了。 Autotools宏的修改相对比较简单,文件位置参考以上的连载,有贴出具体目录下的文件。 这里首先修改: c/src/lib/libbsp/arm/acinclude.am 这个文件修简单,相当于case语句一样,增加一个case语句
到上一连载为止,RTEMS 4.9.4的相关代码部分的修改就算结束了。 有些细心的朋友会注意到,第三个连载中列出了所有的文件,我们一些文件并没有修改;还有一些文件AT91RM9200中是没有的。如 c/src/lib/libcpu/arm/at91sam9260/memcpy/memcpy.S,这个文件是我找来的一个ARM下memcpy的优化版本,效率应该高于普通的memcpy。库里本来就有m
杂项函数在 BSP 中也是非常重要的。我为了图省事,全部都放置在了:c/src/lib/libcpu/arm/at91sam9260/pmc/pmc.c中。 主要是获取CPU当前的频率和系统主时钟的频率。 前几篇连载中,我们在串口和时钟驱动里都是用了获取主时钟频率的函数。 另外一个就是 udelay 函数。udelay函数原来是posix的标准函数,但是rtems并没有实现,
其实到这里,只要能保证编译通过,再修改一下链接脚本,其实已经可以跑在at9260的系统上了。因为我没有仿真器,不知道程序的状态,所以必须撰写调试串口的驱动。 RTEMS 的调试串口并没有采用中断输出的方式,而是采用查询输出的方式。相对来说比较容易。 RTEMS里有两个打印函数: printf 和 printk printf是由库支持的打印函数,内部比较复杂,
中断驱动AT91rm9200和AT9260差别不大,主要要修改的地方是个别的中断向量号,另外就是最大中断向量号。 我所作的修改: c/src/lib/libcpu/arm/at91sam9260/irq/irq.h 删除了相关的9200的定义,定义了AT9260中断的最大数量。 /* * Interrupt handler Header file * * Bacon Xu
遵循我们上次的步骤, 1.将c/src/lib/libbsp/arm/csb337复制为 c/src/lib/libbsp/arm/at9260; at9260 │ aclocal.m4 │ bsp_specs │ ChangeLog │ configure │ configure.ac │ Makefile.am │ Makefile.in │ preinst
遵循我们上次的步骤, 1.将c/src/lib/libbsp/arm/csb337复制为 c/src/lib/libbsp/arm/at9260; 2.将c/src/lib/libcpu/arm/at91rm9200复制为c/src/lib/libcpu/arm/at91sam9260; 打开 c/src/libbsp/arm/at9260/start/start.S,修改如
09年我接触到 RTEMS,然后开始学习RTEMS,自己先后将 RTEMS移植到 AT91SAM9260的单板上,然后又移植到 Marvell 的 88F6281 的单板上。通过这两个移植,大量的阅读RTEMS 的手册,算是入了点门。于是乎,把 AT91SAM9260 的RTEMS 4.9.4 BSP 撰写的整个过程与调试过程与大家分享。开发 BSP的过程大致如下:1.选择BSP模板,
已经写了Cygwin下的RTEMS方式的建立,但是思前想后,还是把Linux的也写了吧。 先对比一下cygwin和linux的开发环境的优缺点。 1.cygwin 方式 – 下载相关的 GNU Tools 的 压缩 包并安装; – 编译速度慢,但开发界面友好。 2.纯 linux 方式 – 下载相关的 GNU Tools 的 RPM
刚毕业时,就想着找份好工作,然而什么是好工作却没有多想。同学之间问起工作时,首先关心的就是待遇,然后才是做什么的。无形中给自己灌输了一个思想,好工作就是工资高,加之自己没有好好的想过这个问题。结果一份好待遇就成了好工作的代名词。 就这样,我和找工作的同学们一起杀进找工作的洪流中去了。身边的同学捷报频传,自己望着一个个招聘的大旗,不禁困惑了……好工作就是一个月两千三百
上次写那篇文章已经是09年2月份,转眼2年过去,一直没想好再说些什么。后来想想也不用刻意说些什么,就是闲聊一下我的一些新看法吧。 简 历这个东西很重要,从简历上可以看出很多信息来。有很多人喜欢写自己细致认真。可以从简历上看,连排版的基本对齐都有问题,各个排列的标题、小节、摘要左 侧都没有对齐,字体字号也不一致。全角半角的标点符号到处混用。莫名其妙的空格断行,随处可见。这至少说明两个问题:
sorry,我的文章还在写,由于采用Latex排版,由于软件的一些原因,考虑到一些版权问题。我只好发表图片,希望 支持我的朋友们见谅。
开发环境是进行 RTEMS 开发的基础。RTEMS 为开发人员准备了基于Windows和Linux两大操作系统的工具链。 两条工具链都是GNU工具链在不同平台上的移植。本质上都是相同的。 在Windows操作系统下,建立Cygwin的开发环境,在cygwin上编译RTEMS的应用程序, 使用Windows的编辑工具编辑RTEMS的代码。 由于Cygwin是一个Windows下类Linu
为什么需要操作系统? 1.计算机是由CPU、内存、磁盘、显卡、声卡等许许多多设备组成的,而且这些设备的厂商众多,品种繁多,而且不同厂商生产的同种设备虽然完成同种功能,但是具体细节却存在千差万别; 2.为了正确地管理和使用这些设备来实现具体的应用,这样程序员就得了解和掌握各种设备的工作原理。而且对于同种设备,由于不同的硬件厂商在实现细节上的差异使得程序员再次陷入了复杂的硬件控
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号