摘要:
学习ARM开发(10)/* 用循环调用所有初始化函数 */ for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { if ((*init_fnc_ptr)() != 0) { /* 当每个函数初始化失败时,就会挂机在这里。 */ hang(); } }上次说到在函数指针数组里,不断地调用所有初始化函数进行初始化,下面就来仔细地分析一下,它们到底是做什么的,做什么样的初始化,怎么样为后面做好运行的准备工作。看到... 阅读全文
摘要:
学习ARM开发(9)上一次把引导的汇编看完,已经准备C的运行环境,下面就开始学习C的源程序,从start.S文件里到跳文件lib_arm/board.c里运行./*引导程序从汇编start.S里跳到这里执行。蔡军生 2005/07/19*/void start_armboot (void){ /* 声明一个全局指针,它是指向一个数据结构,用于保存参数。 并且它占用r8寄存器,用它来保存内存地址,达到全局使用目的。 */ DECLARE_GLOBAL_DATA_PTR; ulong size; init_fnc_t **init_fnc_ptr; cha... 阅读全文
摘要:
上一次看了数据区,这次要看从引导那里跳到这里执行时,运行什么东西了。/** 实际运行的复位代码。从一开始运行的代码,就跳到这里运行。*/reset: /* * 设置cpu运行在SVC32模式。 */ mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,#0x13 msr cpsr,r0具体分析如下:/** 实际运行的复位代码。从一开始运行的代码,就跳到这里运行。*/reset: /* * 设置cpu运行在SVC32模式。S3C44B0共有7种模式。 */ mrs r0,cpsr取得当... 阅读全文
摘要:
学习ARM开发(7)上一次,学习到第一段代码,这次接着学习第二段代码,而第二段代码主要作用于保存数据的。/**************************************************************************** 启动代码。** 如果不作内存初始化,就只建立堆栈,重新定位代码到RAM位置。* 然后就可以跳到第二阶段的代码运行了。* * ***************************************************************************//* 保存变量的数据区 */_TEXT_BASE: .wo... 阅读全文
摘要:
学习ARM开发(6)上一次,说到要学习ARM汇编,好,现在就开始。目前我的引导程序是在UBOOT1.1.2上修改过来的,大家可以下载UBOOT的源程序,也许你们会问在那里有下呢?这个问题不用我回答了,用GOOGLE,直接找u-boot,就可以找到了。由于这个引导程序是从u-boot1.1.2修改过来的,所以还是采用uboot的编译工具,它就是arm-linux-tools-20031127.tar.gz,这个可以uboot的网站下载,然后在linux下安装好,就可以编译引导程序。编译命令主要:make clean 是清空所有临时文件,一般是用来清空目录,用来重新编译程序。make XXXX_c 阅读全文
摘要:
学习ARM开发(5)蔡军生 2005/07/16 写于深圳上一次说到要学习UBOOT的代码,但在看之前,首先要知道目标机器的编程资源,这里的资源,是指S3C44B0所提供的运行程序的资源,对任何嵌入式软件开发,都首先要对硬件有一个很好的了解,这跟PC机的编程是大不一样的。因为PC机都已经发展了30多年,但整个编程的体系是没有很大的变化,就是说现在的PC都是在虚拟机上编写了,跟硬件打交道的机会很少,所以不用去了解它。但是在嵌入式的软件里,每样硬件都是千差万别的,所以一定要去看原版的S3C44B0说明手册,一定要看英文原版的,不能看那种中文版的,哈哈,为什么要看英文原版的呢?第一,每个CPU都有很 阅读全文
摘要:
学习ARM开发(4)已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西。如果没有学习过《微机原理》,那最好去看看,或者去看看RISC的CPU设计,就是龙芯的设计,在清华上面有很多关于龙芯的设计文档,这些都是CPU的功能。为什么要学习汇编呢?现在不是大多数用C编写的了吗?是的,目前嵌入式软件大多数都是用C开发的。其实学习汇编,是为了更好了解CPU的处理,这个只是为了了解,为了更深入的了解,而不是用它来开发大部份的应用。当然它也是有用的地方,比如BOOTLOADER这样的程序,没有汇编,是不可能完成的。还有那些有特殊的指令,没有 阅读全文
摘要:
学习ARM开发(2)今天是星期天,刚好在家里休息。又是学习ARM的大好时机了。早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的。搞得睡觉,也睡不好。立即把电脑打开,为了更加快点,把家里两台电脑都打开,用一台比较快的电脑装LINUX。目前因为两台电脑都已经安装WINDOWS系统,又装了很多软件。为了没有什么风险,就装了VMWARE软件,就是虚拟机软件,这个软件的虚拟速度确实快很多,它跑图形的操作系统也不慢。如果BOCHS,一运行图形的操作系统,就会很慢,因此放弃了这个自由软件。如果我的电脑速度也很快,比如用AMD64位的最新CPU或许用BOCHS也不慢。哈哈。。。。。装好VMWA 阅读全文
摘要:
#1 学习ARM开发(1)做任何事情之前,一定要想好目标。没有目标的事情是做不好的,也做不成。我的目标就是学习ARM开发,当然是深入的学习。目标如下 :1、学习ARM开发环境。2、学习ARM指令。3、学习ARM汇编。4、学习BOOTLOADER.5、学习uClinux编译和使用。所有上面这些都基于三星的s3c44b0开发板进行的。 阅读全文
摘要:
专注做嵌入式软件开发。5年来,做PC软件总是没有钱挣,但一些同学做嵌入式软件开发的,都已经小车开了。唉。。。。。 阅读全文