Blog of Jeff Xue

  • Home

  • Categories

  • 读书

  • 编程

  • 思考

  • Archives

  • Tags

ARM-Tiny6410-裸机开发-Led_Button_Timer

Posted on 2012-12-24 Edited on 2019-08-01 In 嵌入式

Overview

本文针对tiny6410裸机程序中的Led、Button、Timer、Interrupt 等控制程序进行分析,部分代码由国嵌相关代码修改得到。
(PS:需安装好jlink和rvds2.2,对于代码中所有include到的文件可以在Reference中找到)

Read more »

ARM-Tiny6410-开发环境搭建-Hardware_Linux_arm-linux-gcc

Posted on 2012-12-22 Edited on 2019-08-01 In 嵌入式

准备硬件设备

  1. tiny6410开发板
  2. USB转串口线(若有串口接口则不必)
  3. 交叉网线
  4. 交换器
  5. PC机(windows7系统)
  6. 普通网线

搭建调试环境

  1. 根据Tiny6410 刷机手册安装linux 系统到开发板,开发板开机则可测试,可根据linux开发手册进行测试;
  2. 下载putty 软件作为终端(windows7 没有超级终端)
    • putty 选择Serial 设置串口号和波特率115200
    • 在connection进行高级设置如下:(Flow Control 需要选择为none)
  3. 串口线连接到开发板和PC机上(提示安装驱动则上网下载USB转串口驱动进行安装)
    • 安装完成后使用putty 连接到到开发板
    • 可自行根据linux 开发手册进行串口控制开发板测试
  4. 安装VMware 虚拟机
  5. 安装redhat 5 (镜像文件在光盘中可找到)
  6. 设置redhat网络
    • redhat 网络连接方式为桥接( 在VM –setting 可进入)
    • 以root登陆redhat 后设置IP获取方式为manual(*注设置的静态IP要与开发板上IP为同一网段)
  7. 设置windows上网络
    • 进入到更改适配器设置,右击本地连接进入属性,设置IPV4属性为静态IP(*注设置的静态IP要与开发板上IP为同一网段)
  8. 网线连接
    • PC机上采用普通网线,连接到交换机上
    • 开发板采用交叉网线,连接到交换机上
    • Redhat,windows 和开发板可以通过终端互ping成功,则网络配置成功
  9. 设置文件共享
    • 文件共享的方式有很多:samba NFS TFTP
    • 而我推荐使用最简单的方式使用VMware 自带的一个文件共享功能
    • 首先,开启redhat 后单击VM下的install-VMtools,安装后则可使用共享文件功能
    • 在VM-setting 中设置需要共享的文件夹
    • 设置好后可以在mnt 下找到共享的目录

交叉编译环境

可参考友善linux开发手册上内容

RVDS2.2配置

Posted on 2012-12-01 Edited on 2019-08-01 In 嵌入式
  1. 进入CodeWarrior for RVDS

  2. 选择菜单edit–Debug Settings

  3. 修改RealView Assembler 下的 Architecture or Processor 为ARM1176JZF-S(根据不同CPU进行修改)

  4. 修改RealView Compiler 下的 Architecture or Processor 为ARM1176JZF-S(根据不同CPU进行修改)

  5. 修改RealView Linker 下的 R0 Base (程序所要下载要的内存地址)

  6. 修改RealView FromELF 下的 output format(Plain binary) 和output file name (xxx.axf/xxx.bin)

  7. 进入AXD

  8. 进入菜单Options–configure target(启动时或许会提示缺少某一个.dll文件,只需要在jlink安装目录下找到相关dll文件拷贝到对应的目录下即可)

  9. 点击Add,添加jlink安装目录下的JlinkRDI.dll 点击OK即可

RVDS2.2安装步骤

Posted on 2012-11-30 Edited on 2019-08-01 In 嵌入式

安装环境:window7
CPU:AMD(对安装会有影响,查看最后面排除CPU引起错误说明)

  1. 下载rvds2.2的压缩包(下载地址:http://115.com/file/aq6lhqym)解压,进入目录

  2. 进入Crack文件夹,双击运行keygen.exe,然后点击Generate来生成license.dat

  3. 在C盘的根目录下创建一个名为flexlm的文件夹,将刚才生成的license.dat拷贝进去,同时将LM_LICENSE_FILE = c:\flexlm\license.dat 加入到环境变量中

  4. 运行Crack文件夹中的patch.exe进行打补丁(否则安装到100%之后会提示错误,无法安装成功):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    %Install Path%\IDEs\CodeWarrior\CodeWarrior\5.6.1\1592\win_32-pentium\bin\Plugins\License\oemlicense.dll (该文件没有找到,我直接跳过了)
    %Install Path%\IDEs\CodeWarrior\RVPlugins\1.0\86\win_32-pentium\oemlicense\oemlicense.dll
    %Install Path%\RDI\armsd\1.3.1\66\win_32-pentium\armsd.exe
    %Install Path%\RDI\AXD\1.3.1\98\win_32-pentium\axd.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\armasm.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\armcc.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\armcpp.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\armlink.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\fromelf.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\tcc.exe
    %Install Path%\RVCT\Programs\2.2\349\win_32-pentium\tcpp.exe
    %Install Path%\RVD\Core\1.8\734\win_32-pentium\bin\tvs.exe
    %Install Path%\RVD\Core\1.8\734\win_32-pentium\bin\xry100.dll
    %Install Path%\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\armiss.sdi
    %Install Path%\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\armulate.sdi
    %Install Path%\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\v6armiss.sdi
    %Install Path%\RVARMulator\v6ARMulator\1.4.1\238\win_32-pentium\v6thumb2.sdi
    %Install Path%\RVARMulator\v6ARMulator\1.4.1\238\win_32-pentium\v6trustzone.sdi
  5. 由于CPU为ADM的,在安装过程中会出现很多出现很多Error: %variable HOSTPLAT is not defined in File RDI\armsd\1.3.1\66\install.xml
    为了排除该错误只需要进行如下操作:把安装目录中的RDI/ARMSD/1.3.1/66下的INSTALL.XML与utilities/installer/1.6/43下的install.xml中的%(HOSTPLAT)%替换为%(FS)win_32-pentium%

  6. 进入rvds2.2目录下运行setup安装,安装到达lincense验证页面时,选择C:/flexlm目录下的license.dat 继续安装

linux应用程序设计基础--多线程程序设计

Posted on 2012-11-21 Edited on 2019-08-01 In Linux

为什么使用多线程原因

  • 线程比进程节俭,轻量级
  • 运行一个进程的多个线程,他们使用相同的地址空间,线程间切换更快
  • 使CPU更有效
  • 改善程序结构

多线程遵循POSIX线程接口

pthread(#include <pthread.h>)
- 连接时需要libpthread.a库

Read more »

linux应用程序设计基础--进程间通信(IPC)

Posted on 2012-11-20 Edited on 2019-08-01 In Linux

进程间通信作用

  • 数据传输
  • 资源共享
  • 通知事件
  • 进程控制

通信方式

  • 管道pipe/FIFO
  • 信号signal
  • 消息队列
  • 共享内存
  • 信号量
  • 套接字
Read more »

linux应用程序设计基础--进程控制编程

Posted on 2012-11-20 Edited on 2019-08-01 In Linux

获取ID

1
2
3
4
5
#include <sys/type.h>
#include <unistd.h>

pid_t getpid(void);
pid_t getppid(void);

创建进程

1
2
3
4
#include <unistd.h>

pid _t fork(void);//代码共享,数据拷贝,父进程与子进程运行顺序不确定
pid_t vfork(void);//代码数据共享,子进程先执行,父进程后执行
Read more »

linux应用程序设计基础--进程控制原理

Posted on 2012-11-20 Edited on 2019-08-01 In Linux
  • 进程:是一个具有一定独立能力的程序的一次运行活动

  • 特点:动态性,并发性,独立性,异步性

    • 开始程序处于就绪状态,通过进程调度进入执行状态,执行的时间片完了返回就绪状态
    • 执行状态下IO请求进入阻塞状态,阻塞状态下IO完成返回就绪状态
  • 进程ID:PID标识进程的唯一数字

  • 父进程ID:PPID

  • 启动进程的用户ID:UID

Read more »

linux应用程序设计基础--时间编程

Posted on 2012-11-19 Edited on 2019-08-01 In Linux

时间类型

UTC —- 世界标准时间:格林威治时间GMT
日历时间 —- 从1970-1-1到现在的秒数

获得日历时间

1
2
#include <time.h>
time_t time(time_t *tloc);
Read more »

linux应用程序设计基础--库函数访问文件

Posted on 2012-11-19 Edited on 2019-08-01 In Linux

C库函数独立于具体的操作系统,具有较强移植性

创建和打开

1
2
3
FILE *fopen(const char *filename,const char *mode);//linux 不区分二进制和文件,因此mode的b标志基本没有影响
eg: FILE *fd;
fd=fopen("c1.txt","rt");

读文件

1
size_t fread(void *ptr,size_t size,size_t n,FILE *stream);
Read more »
1…91011
Jeff Xue

Jeff Xue

Think Bigger, Start Simple!
104 posts
10 categories
48 tags
GitHub
© 2016 – 2021 Jeff Xue
Powered by Hexo v3.9.0
|
Theme – NexT.Gemini v7.3.0