s3c2410开发环境建立

首先介绍的整体的环境是ubuntu 9.04 gcc的版本是4.1.下面是具体的环境建立

(1)arm-linux-gcc安装

在下面的网址上http://www.handhelds.org/download/projects/toolchain/下载arm-linux-gcc-3.4.1.tar.bz2

执行下面的命令:

将arm-linux-gcc-3.4.1.tar.bz2复制到/tmp下

bunzip2 arm-linux-gcc-3.4.1.tar.bz2生成arm-linux-gcc-3.4.1.tar

tar xvf arm-linux-gcc-3.4.1.tar -C / 将该tar包解压到/usr/local/arm目录下

修改/etc/bash.bashrc新增加下面

if [ -d /usr/local/arm/2.95.3 ] ; then
PATH=/usr/local/arm/2.95.3/bin:"${PATH}"
fi

注意的是上面的PATH后没有空格

是上面的修改生效 source /etc/profile

下面是测试程序hello.c

#include <stdio.h>

int main ()

{

      printf("hello world/n");

      return 0;
}

使用下面的命令编译arm-linux-gcc hello.c -o hello,于是生成二进制hello

 

(2)Jflash-s3c2410安装,S3C2410芯片的JTAG工具

到chinaunix上下载Jflash-s3c2410bz2,解压,进入解压完的目录

make all(查看Makefile可知)

第一次时出现下面的error:asm/io.h : No such file or directory。google之得到如下的solution。http://forum.ubuntu.org.cn/viewtopic.php?f=70&t=255593&view=next

Notes on source code: Some people have reported that for some reason this code does not work on theuir systems. If you have problems in getting this to work, try tho following chagest to code: replace the lines "#include <unistd.h%gt;" and "#include <asm/io.h>" with line "#include <sys/io.h>" and then replace line "#define base 0x378" with "#define base 0x0378".

这是人家原文的话,要仔细看。
将<asm/io.h>改为<sys/io.h>

然后生成Jflash-s3c2410,最后将该文件复制到/usr/local/bin/下

 

(3)安装gdb调试工具

首先在http://ftp.gnu.org/gnu/gdb/下载gdb-7.0.tar.gz(gcc -4.1下测试通过,没有安装gcc-4.1的话,可以使用sudo apt-get install gcc-4.1来安装)

执行下面的命令:

cp XXX/gdb-7.0.tar.gz /tmp(XXX是gdb-7.0.tar.gz路径)

cd /tmp

tar zxvf gdb-7.0.tar.gz

cd gdb-7.0

export CC=gcc-4.1

./configure --target=arm-linux

make

sudo make install

执行完上面的命令之后,会安装完成arm-linux-gdb和gdbserver。

 

在安装arm-linux-gdb时,最初使用的是gdb-6.3.tar.gz,但是编译时在sim/arm/iwmmxt.c上出现编译错误,google该错误得到下面的solution,http://hi.baidu.com/zjsxycli/blog/item/99863fddf1be55196227986e.html

将2117行的    (signed long long) t += s;   
改成        (signed long long)t;    t = (signed long long)(t + s);


将2133行的    (signed long long) wR[BITS (12, 15)] += (signed long long) t;   
改成    {(signed long long) wR[BITS (12, 15)];    wR[BITS (12, 15)] = (signed long long)(wR[BITS (12, 15)] + t);}


将2169行的    (signed long) s1 = a * b;   
改成    (signed long) s1;    s1 =(signed long)(a * b);


将2177行的    (signed long) s2 = a * b;
改成    (signed long) s2;    s2 =(signed long)(a * b);


将2186行的    (unsigned long) s1 = a * b;
改成    (unsigned long) s1;    s1 =(unsigned long)(a * b);


将2191行的    (signed long) s2 = a * b;
改成    (unsigned long) s2;    s2 =(unsigned long)(a * b);



编译Gdbserver:

linux-arm-low.c:26:21: error: sys/reg.h: No such file or directory
make: *** [linux-arm-low.o] 错误 1

根据在linux-arm-low.c中:
#ifdef HAVE_SYS_REG_H
#include <sys/reg.h>
#endif

在gdb/gdbserver/config.h修改如下:
/* Define if you have the <sys/reg.h> header file.  */
#define HAVE_SYS_REG_H 1

/* Define if you have the <sys/reg.h> header file.  */
//#define HAVE_SYS_REG_H 1 省略

 

但是按照上面的方法实验,依然出错。所以怀疑是版本的问题,果然在换了一个较高的版本之后,成功。

本书面向由传统51单片机转向ARM嵌入式开发的硬件工程师、由硬件转嵌入式软件开发的工程师、没有嵌入式开发经验的软件工程师。分9个部分: 1、开发环境建立 2、S3C2410功能部件介绍与实验(含实验代码) 3、bootloader vivi详细注释 4、linux移植 5、linux驱动 6、yaffs文件系统详解 7、调试工具 8、GUI开发简介 9、UC/OS移植 通过学习第二部分,即可了解基于ARM CPU的嵌入式开发所需要的外围器件及其接口。对应的实验代码实现了对这些接口的操作,这可以让硬件工程师形成一个嵌入式硬件开发的概念。这部分也可以当作S3C2410的数据手册来使用。 一个完整的嵌入式linux系统包含4部分内容:bootloader、parameters、kernel、root file system。3、4、5、6部分详细介绍了这4部分的内容,这是linux底层软件开发人员应该掌握的。通过学习这些章节,您可以详细了解到如何在一个裸板上裁减、移植linux,如何构造自己的根文件系统,如何编写适合客户需求的驱动程序——驱动程序这章将结合几个经典的驱动程序进行讲解。您还可以了解到在用在nand flash上的非常流行的yaffs文件系统是如何工作的,本书将结合yaffs代码详细介绍yaffs文件系统。 第7部分介绍了嵌入式linux开发中使用gdb进行调试的详细过程。 此文档目前完成了1、2、3部分,后面部分将陆续完成。希望能对各位在嵌入式开发方面献上棉力。 欢迎来信指出文中的不足与错误,欢迎来信探讨技术问题。
linuxdriver_code_tool |-- 03 | `-- 2.6内核升级工具 | |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数范例 | | `-- book.c | |-- 内核模块导出符号 | | `-- export_symb.c | `-- 最简单的内核模块 | `-- hello.c |-- 05 | `-- udev源代码 | `-- udev-114.tar.gz |-- 06 | |-- globalmem驱动 | | `-- globalmem.c | `-- 包含2个globalmem设备的驱动 | `-- globalmem_two.c |-- 07 | `-- 含并发控制的globalmem驱动 | `-- globalmem_lock.c |-- 08 | |-- globalfifo驱动 | | `-- globalfifo.c | `-- poll应用程序范例 | `-- pollmonitor.c |-- 09 | |-- 异步通知应用程序范例 | | `-- asyncmonitor.c | `-- 支持异步通知的globalfifo | `-- globalfifo_async.c |-- 10 | |-- S3C2410实时钟驱动 | | `-- s3c2410-rtc.c | `-- 秒设备驱动与应用程序 | |-- second.c | `-- second_test.c |-- 11 | |-- DMA范例 | | |-- 3c505.c | | |-- 3c505.h | | `-- dma.h | `-- 静态映射范例 | `-- mach-smdk2440.c |-- 12 | |-- NVRAM驱动 | | `-- generic_nvram.c | |-- 触摸屏驱动 | | |-- 作为input设备 | | | |-- s3c2410_ts.c | | | `-- s3c2410_ts.h | | `-- 作为普通字符设备 | | `-- s3c2410-ts.c | |-- 看门狗驱动 | | `-- s3c2410_wdt.c | `-- 平台设备 | `-- devs.c |-- 13 | |-- IDE驱动 | | |-- ide-disk.c | | `-- ide-h8300.c | `-- RAMDISK驱动 | `-- rd.c |-- 14 | |-- S3C2410串口驱动 | | |-- regs-gpio.h | | |-- regs-serial.h | | `-- s3c2410.c | `-- 串口核心层 | |-- serial_core.c | `-- serial_core.h |-- 15 | |-- S3C2410 I2C主机驱动 | | |-- i2c-s3c2410.c | | |-- iic.h | | |-- regs-gpio.h | | `-- regs-iic.h | `-- SAA711x I2C设备驱动 | `-- saa711x.c |-- 16 | `-- CS8900以太网设备驱动 | |-- cs89x0.c | `-- cs89x0.h |-- 17 | |-- ALSA工具及库 | | |-- alsa-driver-1.0.15.tar.bz2 | | |-- alsa-firmware-1.0.15.tar.bz2 | | |-- alsa-lib-1.0.15.tar.bz2 | | |-- alsa-oss-1.0.15.tar.bz2 | | |-- alsa-tools-1.0.15.tar.bz2 | | |-- alsa-utils-1.0.13.tar.bz2 | | `-- pyalsa-1.0.15.tar.bz2 | |-- ALSA驱动范例 | | |-- sa11xx-uda1341.c | | `-- uda1341.h | |-- ALSA应用程序范例 | | |-- pcm.c | | `-- pcm_min.c | |-- OSS驱动范例 | | `-- s3c2410-uda1341.c | `-- OSS应用程序范例 | |-- mixer.c | `-- sound.c |-- 18 | |-- FRAMEBUFFER应用程序范例 | | `-- fb_display | | |-- fb_display.c | | |-- fb_display.h | | |-- Makefile | | |-- README | | `-- test.c | `-- S3C2410 LCD驱动 | |-- s3c2410fb.c | `-- s3c2410fb.h |-- 19 | |-- busybox源代码 | | `-- busybox-1.2.1.tar.bz2 | |-- MTD工具 | | `-- mtd-utils-1.0.0.tar.gz | |-- nand驱动范例 | | `-- s3c2410.c | |-- nor驱动范例 | | `-- s3c2410nor.c | `-- yaffs&yaffs2源代码 | |-- yaffs.tar.gz | `-- yaffs2.tar.gz |-- 20 | |-- USB串口驱动 | | |-- usb-serial.c | | `-- usb-serial.h | |-- USB工具 | | `-- usbview-1.0.tar.tar | |-- USB骨架程序 | | `-- usb-skeleton.c | |-- USB键盘驱动 | | |-- input.h | | |-- usb_input.h | | `-- usbkbd.c | `-- usb主机控制器驱动范例 | |-- ohci-s3c2410.c | `-- usb-control.h |-- 21 | |-- PCI骨架程序 | | `-- pci-skeleton.c | `-- PCI驱动范例 | `-- i810_audio.c `-- 22 |-- 范例代码 | |-- oops范例 | | |-- oops_example.asm | | `-- oops_example.c | `-- proc范例 | `-- sim_proc.c `-- 内核调试工具 |-- ddd-3.3.11.tar.gz |-- gdbmod-2.4.bz2 |-- kdb-v4.4-2.6.15-rc5-common-1.bz2 |-- kdb-v4.4-2.6.15-rc5-common-2.bz2 |-- kdb-v4.4-2.6.15-rc5-i386-1.bz2 `-- linux-2.6.15.5-kgdb-2.4.tar.tar 73 directories, 91 files
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值