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编译开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/chuoceng6947/article/details/100822088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/294169

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同