1,linux开发环境搭建
2,程序测试
easyOpentag驱动安装,打开连接,选择ARM-linux
1,环境搭建
我的系统版本
root@ubuntu:~#lsb_release-a
NoLSBmodulesareavailable.
DistributorID:Ubuntu
Description:Ubuntu14.04.3LTS
Release:14.04
Codename:trusty
root@ubuntu:~#
我使用的mirros
root@ubuntu:~#cat/etc/apt/sources.list
debhttp://mirrors./ubuntutrustymainuniverserestrictedmultiverse
debhttp://mirrors./ubuntutrusty-securitymainuniverserestrictedmultiverse
debhttp://mirrors./ubuntutrusty-updatesmainuniverserestrictedmultiverse
debhttp://mirrors./ubuntutrusty-backportsmainuniverserestrictedmultiverse
deb-srchttp://mirrors./ubuntutrustymainuniverserestrictedmultiverse
deb-srchttp://mirrors./ubuntutrusty-securitymainuniverserestrictedmultiverse
deb-srchttp://mirrors./ubuntutrusty-updatesmainuniverserestrictedmultiverse
deb-srchttp://mirrors./ubuntutrusty-backportsmainuniverserestrictedmultiverse
安装基本开发包
root@ubuntu:~#apt-getupdate&&apt-getinstall-ybuild-essentialbisonflexmanpages-dev
root@ubuntu:~#echo$?
0
安装arm-linux-gcc
解压arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2来自韦东山教学光盘
tarxfarm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2
安装sudoapt-getinstalllsb-core
否则可能出现Nosuchfileordirectory
root@ubuntu:~/leds#arm-linux-objcopy
bash:/home/chunli/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-objcopy:Nosuchfileordirectory
更改系统PATH
chunli@ubuntu:~$sudovim/home/chunli/.bashrc
exportPATH=$PATH::/home/chunli/gcc-3.4.5-glibc-2.3.6/bin/
看看我的系统编译环境搭建好了
chunli@ubuntu:~$arm-linux-gcc-v
Readingspecsfrom/home/chunli/gcc-3.4.5-glibc-2.3.6/bin/../lib/gcc/arm-linux/3.4.5/specs
Configuredwith:/work/tools/create_crosstools/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure--target=arm-linux--host=i686-host_pc-linux-gnu--prefix=/work/tools/gcc-3.4.5-glibc-2.3.6--with-float=soft--with-headers=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include--with-local-prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux--disable-nls--enable-threads=posix--enable-symvers=gnu--enable-__cxa_atexit--enable-languages=c,c++--enable-shared--enable-c99--enable-long-long
Threadmodel:posix
gccversion3.4.5
chunli@ubuntu:~$
编写一个点亮LED的程序:
写一个点亮JZ2440开发板的一个汇编小程序
JZ2440开发板:
从JZ2440v2_sch.pdf中可以看出
nLED_2 上拉到3.3V
nLED_2 另一脚是接在GPF5 这个IO功能引脚上
查S3C2440官方手册
GPFCON 的地址是 0x56000050 ,此寄存器的值设为 0x00000400 配置GPF5这个引脚为输出
GPFDAT 的地址是 0x56000054 控制GPF5输出低电平
chunli@ubuntu:~/hardware$mkdirmy
chunli@ubuntu:~/hardware$cdmy/
chunli@ubuntu:~/hardware/my$vimled_on.S
@******************************************************************************
@File:led_on.S
@功能:LED点灯程序,点亮LED1
@******************************************************************************
.text
.global_start
_start:
LDRR0,=0x56000050@R0设为GPBCON寄存器。此寄存器用于选择各引脚的功能:是输出、是输入、还是其他
MOVR1,#0x00000400@设置为输出引脚
STRR1,[R0]@设置GPF5为输出口,位[10:9]=0b01
LDRR0,=0x56000054@R0设为GPBDAT寄存器。此寄存器用于读/写端口B各引脚的数据
MOVR1,#0x00000000@此值改为0xFFFFFFFF,可让LED2熄灭
STRR1,[R0]@GPB5输出0,LED1点亮
MAIN_LOOP:
BMAIN_LOOP
编写Makefile文件
chunli@ubuntu:~/hardware/my$vimMakefile
led_on.bin:led_on.S
arm-linux-gcc-g-c-oled_on.oled_on.S
arm-linux-ld-Ttext0x0000000-gled_on.o-oled_on_elf
arm-linux-objcopy-Obinary-Sled_on_elfled_on.bin
clean:
rm-fled_on.binled_on_elf*.o
编译
chunli@ubuntu:~/hardware/my$make
arm-linux-gcc-g-c-oled_on.oled_on.S
arm-linux-ld-Ttext0x0000000-gled_on.o-oled_on_elf
arm-linux-objcopy-Obinary-Sled_on_elfled_on.bin
没有报错
chunli@ubuntu:~/hardware/my$echo$?
0
chunli@ubuntu:~/hardware/my$ll
-rwxrwxr-x1chunlichunli36Apr1222:20led_on.bin*
-rwxrwxr-x1chunlichunli34144Apr1222:20led_on_elf*
-rw-rw-r--1chunlichunli1412Apr1222:20led_on.o
-rw-rw-r--1chunlichunli1035Apr1222:19led_on.S
-rw-rw-r--1chunlichunli218Apr1222:20Makefile
把led_on.bin程序传到Windows平台,
FTD2XX.dll
oflash.exe
led_on.bin
放在一起就可以
运行oflash.exe小程序,
D:\ARM嵌入式Linux\my>oflash.exe
+---------------------------------------------------------+
|FlashProgrammerv1.|
|OpenJTAGisaUSBtoJTAG&RS232toolbasedFT2232|
|ThisprogrammersupportsbothofS3C24X0&S3C6410|
|Author:Email/MSN(thisway.diy@),QQ(17653039)|
+---------------------------------------------------------+
Usage:
1.oflash,runwithcfg.txtorprompt
2.oflash[file],write[file]toflashwithprompt
3.oflash[-fconfig_file]
4.oflash[jtag_type][cpu_type][flash_type][read_or_write][offset][file]
Can'topencfg.txt,youshouldfollowtheprompt
SelecttheJTAGtype:
0.OpenJTAG
1.DongleJTAG(parallelport)
2.WigglerJTAG(parallelport)
Enterthenumber:0
SelecttheCPU:
0.S3C2410
1.S3C2440
2.S3C6410
Enterthenumber:1
device:4"2232C"
deviceID:0x14575118
SerialNumber:FTSht3gzA
Description:USB<=>JTAG&RS232AS3C2440detected,cpuID=0x0032409d
[MainMenu]
0:NandFlashprog1:NorFlashprog2:MemoryRd/Wr3:Exit
Selectthefunctiontotest:0
Enterthefilename:led_on.bin
[NANDFlashJTAGProgrammer]
Scannandflash:
Device0:NAND256MiB3,3V8-bit,sectorsize128KiB
Totalsize:256MiB
0:NandFlashProgram1:NandFlashPrintBlkPage2:Exit
Selectthefunctiontotest:0
[NANDFlashWritingProgram]
Sourcesize:0x24
Availabletargetblocknumber:0~2047
Inputtargetblocknumber:0
targetstartblocknumber=0
targetsize(0x20000*1)=0x20000
STATUS:
Ep
D:\ARM嵌入式Linux\my>
等5秒,开发板的小灯亮起