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

2023-10-28 15:30

本文主要是介绍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;elsereturn 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;elsereturn 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 = 16kSDRAM : ORIGIN = 0x30004000, LENGTH = 64M_16k  } 
改为:
MEMORY {SDRAM : ORIGIN = 0x30000000, LENGTH = 64M - 16KSDRAM_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

这篇关于SElinux安全操作系统---RTEMS编译开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/294169

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可