SElinux安全操作系统---RTEMS编译开发环境搭建

开发板:天嵌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 驱动安装没有签名,电脑重启进入驱动免签名模式,然后手动安装驱动

                                104300_MWaR_1466132.png

              设备管理器中,如上图所示才算驱动安装成功!

       3:安装下载工具,如果是linux系统直接开发,可以使用dnw2下载程序到开发板中,但是win中,需要安装下载工具,TQ2440开发板自带的dnw下载工具,可以直接下载。

            针对于win10,dnw下载工具无法使用的问题:

            可使用SuperVivi-Transfer-Tool-Complete工具代替dnw下载,如下图所示:

               104637_wuBS_1466132.png

搭建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代表环境安装成功,一般新系统都是缺少包的:

                      095444_5zOa_1466132.png

所以需要安装几个依赖包:

                    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上面执行

 

转载于:https://my.oschina.net/u/1466132/blog/813456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值