嵌入式软件开发
文章平均质量分 77
makethyme
这个作者很懒,什么都没留下…
展开
-
ARM汇编语言指令(2)
程序跳转>(1) 简单的无条件转移unconditional branch B Next; 调转到Next(2) 有条件跳转MOV R0, #20 Next SUBS R0, R0, #1 BNE Next注意在原创 2007-06-17 17:49:00 · 2371 阅读 · 0 评论 -
GNU Binutils之nm
GNU Binutils之nm 作者:makethymenm用于列出目标文件的符号清单,如果没有指定目标文件,则默认为“a.out”。nm的格式如下:nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’] [‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’]原创 2007-09-27 21:04:00 · 1893 阅读 · 0 评论 -
移植Linux-2.6.22 到S3C2440的开发板上可以通过printk输出了
前两天在移植Linux的过程中,当程序运行到init/main.c中的start_kernel()时,调用printk,死活不能通过串口输出,且有输出时,是乱码, 如下:通过修改mach-smdk2440.c中的函数smdk2440_map_io(),将 s3c24xx_init_clocks(16934400)修改为 s3c24xx_init_原创 2007-10-17 21:46:00 · 2182 阅读 · 0 评论 -
移植U-BOOT到S3C2440板子上对读flash的device ID不对的分析
在S3C2440的板子上移植U-BOOT-1.1.6时,使用的NAND Flash为Samsung K9F1208U0B。模仿vivi对nand flash的操作,运用如下代码读取manufacture ID和device ID,能够获取正确的值:void get_manufacture_device_id(char *manuID, char *deviceID){int i;NAND_原创 2007-12-11 21:06:00 · 2933 阅读 · 0 评论 -
GNU Binutils工具readelf之Python实现
"""该程序用于分析elf格式的文件,仅仅是在学习Python的过程中,用于熟悉各种Python语法"""__author__ = "makethyme@sina.com.cn"__version__ = "$Revision: 0.1 $"__date__ = "$Date : 2006/08/05 $"__copyright__ = "Cop原创 2007-12-24 20:52:00 · 3073 阅读 · 0 评论 -
u-boot-1.1.6及Linux-2.6.22到arm platform(s3c2440)
u-boot-1.1.6及Linux-2.6.22到arm platform(s3c2440) 作者:makethyme更新u-boot为了更新u-boot,需要启动tftp服务器.需要设置PC机的网关,IP等. 如下:在Federo 4.0中点击运用程序->系统设置->原创 2008-09-03 20:50:00 · 2556 阅读 · 0 评论 -
移植u-boot-1.3.4到qq2440开发板(1)
移植u-boot-1.3.4到qq2440开发板(1) 作者:makethyme 以前曾经将u-boot-1.1.6移植到QQ2440 (cpu为S3c2440)开发板,前几天有空闲时,计划重新将新的u-boot-1.3.4移植到开发原创 2010-02-28 19:36:00 · 1168 阅读 · 0 评论 -
移植u-boot-1.3.4到qq2440(2)
移植u-boot-1.3.4到qq2440,能运行了。原创 2010-06-10 15:13:00 · 1598 阅读 · 0 评论 -
Yamon的编译
介绍Bootloader Yamon的编译过程原创 2011-03-25 15:17:00 · 1710 阅读 · 0 评论 -
Yamon startup分析 (未整理一)
介绍Bootloader Yamon的reset.S文件原创 2011-03-28 16:58:00 · 1496 阅读 · 0 评论 -
Yamon startup分析(未整理二)
主要分析arch/reset/init.S和arch/reset/init_platform_s.S文件原创 2011-03-31 10:10:00 · 1208 阅读 · 0 评论 -
Yamon startup分析(未整理三)
接上,继续分析arch/reset/init.S原创 2011-05-30 21:39:00 · 1011 阅读 · 0 评论 -
Yamon startup分析(未整理四)
继续分析init.S,直至进入C环境原创 2011-05-31 10:07:00 · 887 阅读 · 0 评论 -
Vmware Workstation 7.14. build-385536 + Fedora 14中使用minicom
本以为这是一个很简单的问题,一个疏忽,还导致花了一点时间。 (1)首先需要添加串口,在vm power off的情况下,通过VM -> Setting -> Hardware -> Add…来 添加一个串口。Connection选择Use Physical seria原创 2011-09-21 22:57:07 · 874 阅读 · 0 评论 -
LDD3之usb-skeleton
在LDD3的例程usb-skeleton中,1)修改id_table如下:static struct usb_device_id skel_table [] = { {.driver_info = 42}, {}};从而对每个usb device,都会调用这个driver.2)usb_buffer_alloc/usb_buffer_fr原创 2011-12-19 14:41:47 · 1500 阅读 · 0 评论 -
GNU Binutils之objdump
GNU Binutils之objdump 作者:makethyme 格式如下:objdump [‘-a’|‘--archive-headers’][‘-b’ bfdnam原创 2007-09-24 22:59:00 · 1655 阅读 · 2 评论 -
GNU Binutils之objcopy
GNU Binutils之Objcopy 作者:makethymeobjcopy用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。格式如下:objcopy [‘-F’ bfdn原创 2007-09-21 21:36:00 · 1758 阅读 · 0 评论 -
一步步制作 Arm-Linux交叉编译环境
我们使用以下版本的文件为例子建立 arm-linux 交叉编译环境: 编译环境 redhat 7.2 或 8.0 binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz gcc-core-2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2转载 2007-06-23 23:51:00 · 1889 阅读 · 0 评论 -
U-BOOT之Readme
U-BOOT之ReadMe U-boot是基于PowerPC, ARM, MIPS等多种处理器上的bootloader,可以安装在boot ROM中,用于初始化或者测试硬件,或者用于装载和运行应用程序。 where we come from - start from 8xxrom sources- create PPCBoot project (http://sourcefor原创 2007-06-26 21:50:00 · 3900 阅读 · 0 评论 -
U-BOOT编译中的软浮点soft-float问题(R_ARM_PLT32 __div0)
使用arm-linux-gcc-3.4.1和arm-linux-2.95.3交叉编译工具编译U-BOOT-1.1.6时,总是提示如下类似错误信息。/lib_arm/_udivsi3.S:67: relocation truncated to fit: R_ARM_PLT32 __div0lib_arm/_umodsi3.S:79: relocation truncated to fi转载 2007-06-30 12:39:00 · 7320 阅读 · 0 评论 -
ARM汇编语言指令集(3)
常数There is no single instruction which will load a 32 bit immediate constant into a register without performing a data load from memory. The data processing instruction format has 12 bits ava原创 2007-07-02 23:28:00 · 3766 阅读 · 0 评论 -
ARM汇编语言指令集(4)
· Load/Store InstructionsThe ARM is a Load/Store Architecture: Does not support memory to memory data processing operations. Must move data values into registers before using them.ARM ha原创 2007-07-04 23:48:00 · 7967 阅读 · 0 评论 -
ADS1.2进行ARM嵌入式软件开发
使用ADS开发嵌入式程序,需要考虑如下:1.与硬件相关的C语言库函数的使用2.某些C语言库函数使用了调试环境的资源,要把这些使用的资源重定向到目标系统中的硬件上来3.可执行映像文件的存储器映射必须根据目标硬件的存储器分布进行裁减4.在主程序执行前,嵌入式运用程序必须先完成系统的初始化。一个完整的初始化包括用户的启动代码和ADS中C库函数的初始化过程。 ADS1.2 C转载 2007-07-08 21:53:00 · 2531 阅读 · 0 评论 -
ARM - ADS, RealView 编译工具(节选1)
RVCT(RealView Compile Tools):RealView编译工具EABI(Embedded Application Binary Interface)双短线(--)指示命令行关键字,单短线(-)用于命令行单字母选项半位机:开发硬件经常没有最终系统的所有输入和输出设备。需要采用软件机制对应用程序代码的输入/输出(I/O)请求进行服务。此机制使用软件中断操作(SWI转载 2007-07-14 00:24:00 · 2243 阅读 · 0 评论 -
ARM - ADS, RealView 编译工具(节选2)
Specifying output format默认情况下,源文件被编译并链接到可执行映像中。利用这些选项,可指导编译程序从C或C++源文件创建未链接的目标文件、汇编语言文件或列表文件。 -asm 将编译程序产生的汇编语言列表写入文件。如果不使用-c选项,生成目标代码。如果和-fs使用,用汇编列表交叉存取源文件,并且源文件输出到.txt文件。§转载 2007-07-23 21:50:00 · 3639 阅读 · 0 评论 -
ARM对中断IRQ的处理
Startup中断向量表 ;******************************************************************************* ; Exception vectors ;************************************************************原创 2007-05-25 22:43:00 · 6299 阅读 · 0 评论 -
GNU交叉编译环境的建立
进入cygwin根目录 $ cd / 建立三个子目录 $ mkdir –p /src/binutils /src/gcc /src/gdb-p表示如果父目录不存在,则建立父目录 解压相应的压缩文件到不同的子目录,e表示e盘,即CD-ROM GNU Binary Utilities Unzip$ cd翻译 2007-05-23 21:33:00 · 2702 阅读 · 0 评论 -
ARM集成开发环境ADS 1.2常用工具总体介绍
Command-Line常用工具如下 Tool Desc armcc原创 2007-05-28 23:53:00 · 4474 阅读 · 0 评论 -
ARM7TDMI寄存器组织
共有37个寄存器,其中31个通用寄存器,6个状态寄存器,它们全部是32bit宽。任何时候,通用寄存器R0~R14,PC(R15)和一个或两个状态寄存器(CPSR)都是可以访问的。1.不分组寄存器R0~R7R0~R7是不分组寄存器。所有处理器模式下,都存取一样的32位元寄存器。它们是真正的通用寄存器,没有架构所隐含的特殊用途。2.分组寄存器R8~R14R8~R14是分组寄存器。它们每转载 2007-05-30 22:07:00 · 2207 阅读 · 0 评论 -
ARM汇编语言面试题
What registers are used to store the program counter and linker register? A: r15 and r14 are used to store the program counter and linker register, respectively.What is r13 ofter used to转载 2007-05-31 21:11:00 · 6970 阅读 · 0 评论 -
ARM7的存储器映射及分散装载
缺省的存储器映射 如果用户在程序编译时没有提供指定映象的存储器分布,ADS将为生成的目标代码和数据分配一个缺省的存储器映射图。 目标映象被连接到0x8000处,存储和执行区域都位于该地址空间。从前至后,依次为RO(只读)、RW(读写)和ZI(零初始化)部分。在ZI部分之上为HEAP,故HEAP的确切地址在连接时才能确定。但是STACK的基地址是在运用程序启原创 2007-06-04 22:55:00 · 3666 阅读 · 3 评论 -
ARM汇编语言指令(1)
Handling Processor Exception ExceptionDescriptionReset复位中断,中断向量在0x0000处Undefined Instructionun-recognized executing instructionSoftwa原创 2007-06-06 23:07:00 · 3468 阅读 · 0 评论 -
LDD3 linux设备驱动程序学习之lddbus
1. struct device不再包含bus_id,取而代之的是.init_name,修改ldd_bus struct device ldd_bus = { .init_name = "ldd0", .release = ldd_bus_release};修改函数register_ldd_device如下: 将strncpy(ldddev->dev原创 2012-01-11 15:15:51 · 2423 阅读 · 3 评论