开发板:天嵌TQ2440标板
系统:win10+VMware+Ubuntu16.0.4
代码工具:sourceinsight
如果使用win10系统,而不是直接的linux系统开发,应该搭建win平台的嵌入式开发环境和VMware的linux开发编译环境。
首先搭建win10嵌入式开发环境:
1:安装USB转串口工具----网上有很多简易实用的工具,我推荐SecureCRT串口工具,用于和开发板串口信息显示控制。
2:安装USB下载驱动-----TQ2440可以支持USB下载,首先下载USB驱动,TQ2440开发板光盘资料中有驱动直接安装。
针对于win10USB驱动安装不了,解决办法:
下载LibUsbDotNet_setup.2.2.7驱动并安装(64位和32系统通用)
出现的问题:1 驱动安装不上,选择本地驱动,文件夹手动安装。
2 驱动安装没有签名,电脑重启进入驱动免签名模式,然后手动安装驱动
设备管理器中,如上图所示才算驱动安装成功!
3:安装下载工具,如果是linux系统直接开发,可以使用dnw2下载程序到开发板中,但是win中,需要安装下载工具,TQ2440开发板自带的dnw下载工具,可以直接下载。
针对于win10,dnw下载工具无法使用的问题:
可使用SuperVivi-Transfer-Tool-Complete工具代替dnw下载,如下图所示:
搭建VMware 的Ubuntu开发编译环境:
1:安装RTEMS系统编译链工具
安装RTEMS RAM编译链工具是一件非常蛋疼的东西,各种库版本的依赖非常强,还有个版本的限制问题,以及各种莫名的安装BUG,多尝试几遍这样复杂的工具链安装,对Linux操作水平的锻炼是非常强,闲话不扯,进入正题。
在rtems的官方网站上面有关于系统编译工具链搭建的指导文档,地址(点击),在Quick Start部分有安装步骤:
<1>新建工具链目录:~/development/rtems.
<2>加入系统变量:$ export PATH=$HOME/development/rtems/4.11/bin:$PATH
<3>在线获取官方编译包:
$ cd
$ mkdir -p development/rtems/src
$ cd development/rtems/src
$ git clone git://git.rtems.org/rtems-source-builder.git
$ cd rtems-source-builder
<4>检查环境是否OK:
$ source-builder/sb-check
如果出现:RTEMS Source Builder environment is ok代表环境安装成功,一般新系统都是缺少包的:
所以需要安装几个依赖包:
1:apt-get install bison
2:apt-get install cvs
3:apt-get install flex
4:apt-get install git
5:apt-get install texinfo
<5>编译生成工具链,选择4.11/rtems-arm 的支持ARM开发平台的工具链
$ cd rtems
$ ../source-builder/sb-set-builder --list-bsets
$ ../source-builder/sb-set-builder --log=l-sparc.txt \
--prefix=$HOME/development/rtems/4.11 4.11/rtems-arm
注:获取源码编译,和最后一步生成工具链的过程可能会有各种问题,需要耐心的一个一个解决,一般都是gcc工具链的问题,和一些必须的依赖包没有安装上。
<6>修改RTEMS源码的板级支持包,使其能够支持arm开发平台
···········修改mini2440/start.S,在74-80行添加:
* zero the bss */
ldr r1, =bsp_section_bss_end
ldr r0, =bsp_section_bss_begin
_bss_init:
mov r2, #0
cmp r0, r1
strlot r2, [r0], #4
blo _bss_init /* loop while r0 < r1 */
·········mini2440/include/bsp.h中:
#ifndef LIBBSP_ARM_SMDK2410_BSP_H
#define LIBBSP_ARM_SMDK2410_BSP_H
改为
#ifndef LIBBSP_ARM_SMDK2440_BSP_H
#define LIBBSP_ARM_SMDK2440_BSP_H
注释下面这一段:
#if 0
/** @brief FCLK=133Mhz */
#define M_MDIV 81
#define M_PDIV 2
#define M_SDIV 1
/** @brief HCLK=FCLK/2, PCLK=FCLK/2 */
#define M_CLKDIVN 2
/** @brief enable refresh */
#define REFEN 0x1
/** @brief CBR(CAS before RAS)/auto refresh */
#define TREFMD 0x0
/** @brief 2 clk */
#define Trp 0x0
/** @brief 7 clk */
#define Trc 0x3
/** @brief 3 clk */
#define Tchr 0x2
#endif
添加:
#define M_MDIV 0x7f /* FCLK=405Mhz, origin: 81, to: 0x7f*/</SPAN>
#define M_PDIV 2
#define M_SDIV 1
#define M_CLKDIVN 5 /* HCLK=FCLK/4, PCLK=FCLK/2 */
#define REFEN 0x1 /* enable refresh */
#define TREFMD 0x0 /* CBR(CAS before RAS)/auto refresh */
#define Trp 0x0 /* 2 clk */
#define Trc 0x3 /* 7 clk */
#define Tchr 0x2 /* 3 clk */
···········在/rtems-master/c/src/lib/libcpu/arm/s3c24xx/clock/support.c中:
//return((BSP_OSC_FREQ * m) / (p << s));
改为
return((BSP_OSC_FREQ * m * 2) / (p << s));
/*uint32_t get_HCLK(void)
{
if (rCLKDIVN & 0x2)
return get_FCLK()/2;
else
return get_FCLK();
}*/
改为:
/* return HCLK frequency */
uint32_t get_HCLK(void)
{
if ((rCLKDIVN & 0x06) == 0x04)
return get_FCLK() / 4;
else if ((rCLKDIVN & 0x06) == 0x00)
return get_FCLK();
else if ((rCLKDIVN & 0x06) == 0x02)
return get_FCLK() / 2;
else
return get_FCLK() / 3;
}
·············在/arm/mini2440/startup/bspstart.c中:
//rMPLLCON = ((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV);
改为:
rMPLLCON = ((127<<12)+(2<<4)+1);
//REFCNT = 2048+1-(15.6*get_HCLK()/1000000);
改为:
REFCNT = 2048+1-(7.8125 * get_HCLK()/1000000);
············/arm/mini2440/console/uart.c中:
//while(!(rUTRSTAT0 & 0x2)) {
改为
while(!(rUTRSTAT0 & 0x4)) {
添加下面两行:
rCLKCON|=0x100;
rGPHCON |= 0xa0;
rGPHUP |= 0x0c;
//rUFCON0 = 0x07;
改为
rUFCON0 = 0x0;
//rUCON0 = 0x245;
改为
rUCON0 = 0x05;
············/arm/mini2440/startup/linkcmds中:
MEMORY {
SDRAM_MMU : ORIGIN = 0x30000000, LENGTH = 16k
SDRAM : ORIGIN = 0x30004000, LENGTH = 64M_16k
}
改为:
MEMORY {
SDRAM : ORIGIN = 0x30000000, LENGTH = 64M - 16K
SDRAM_MMU : ORIGIN = 0x33ffc000, LENGTH = 16k
}
2:编译RTEMS系统
安装编译链工具后,就可以去获取rtems源码包,但是要和自己的工具链匹配,我选择安装的版本是4.11,所以相对应的源码包是rtems-4.11版本。
注:需要将安装好的编译工具链加入到系统的变量环境中,才可以生效使用。
<1>编译系统的命令步骤:
在rtems目录下:
$./bootstrap -c
$./bootstrap -p
$./bootstrap
$ cd ../
$ mkdir b-sis
$ ../rtems-4.11/configure --target=arm-rtems4.11 --enable-posix --disable-cxx --disable-itron --enable-networking --enable-tests=samples --enable-rtemsbsp=mini2440
<2>生成arm可执行文件
在rtems系统的sample的目录中,有很多系统自带的测试用例,用户自己的程序,也基本上可以模仿rtems里面的历程来写各种用户程序
在b-sis新建的安装目录中找到自己写的用户程序:
$arm-rtems4.11-objcopy -O binary 自己的程序.exe 自由命名.bin
即可生成.bin文件,,通过安装在win上面的下载工具,通过板子的uboot 下载到在arm上面执行