1.嵌入式开发软件有哪些
2.qemu-system-arm安装和基本使用
3.Travis让你的源译代码运行在ARM平台上
4.GitLab ARM64源码在信创统信UOS下的搭建
5.å¦ä½ç¼è¯arm linuxçgo
嵌入式开发软件有哪些
嵌入式开发软件主要包括以下几种:1. 编译器
编译器是嵌入式开发的核心工具之一,它负责将高级语言编写的码编源代码转换为嵌入式系统可执行的机器代码。常见的源译嵌入式编译器有GCC、ARM编译器等。码编这些编译器支持多种编程语言和处理器架构,源译为嵌入式开发者提供了便捷的码编ommo源码开发环境。
2. 集成开发环境
IDE是源译嵌入式开发的重要工具,它集成了代码编辑、码编编译、源译调试和仿真等功能。码编常见的源译嵌入式IDE包括Keil MDK、IAR Embedded Workbench等。码编这些IDE为开发者提供了统一的源译开发平台,提高了开发效率和便捷性。码编
3. 调试工具
调试工具是源译嵌入式软件开发过程中必不可少的部分,用于检测和修复代码中的错误。常见的调试工具有逻辑分析仪、仿真器等。逻辑分析仪可以捕获和分析嵌入式系统在运行时的行为,帮助开发者定位问题。仿真器则可以模拟嵌入式系统的运行环境,让开发者在没有硬件的情况下进行代码调试。
4. 版本控制工具
在嵌入式软件开发过程中,版本控制工具用于管理代码的旗形公式源码版本和变更。最常见的版本控制工具是Git,它可以帮助开发者记录代码的每一次修改,方便版本管理和协作开发。
除了以上几种主要软件,嵌入式开发还可能涉及到其他辅助工具,如代码分析工具、性能优化工具等。这些工具在提高开发效率、保证代码质量、优化系统性能等方面发挥着重要作用。总之,嵌入式开发软件种类繁多,开发者需要根据具体的项目需求和开发环境选择合适的工具进行开发。
qemu-system-arm安装和基本使用
安装OpenBMC维护的qemu:
使用git clone从github.com/openbmc/qemu克隆代码。
切换目录至qemu文件夹。
执行git submodule update --init dtc更新依赖。
创建build目录并切换至该目录。
执行../configure --target-list=arm-softmmu配置arm-softmmu目标。
根据可能遇到的错误提示删除qemu文件夹并重复步骤1-6,安装所需依赖库。
执行make编译qemu-system-arm。
编译后的qemu-system-arm位于arm-softmmu目录下,查看支持的前端罗盘时钟源码机器。
使用sudo ln -s /home/master/qemu/build/arm-softmmu/qemu-system-arm /usr/bin创建全局软链接,方便调用。
本地启动romulus镜像,使用命令sudo qemu-system-arm -m -M romulus-bmc -nographic -drive file=path,format=raw,if=mtd -net nic -net user,hostfwd=:.0.0.1:-:,hostfwd=:.0.0.1:-:,hostname=qemu。
解释镜像参数:为内存大小,romulus-bmc为机型,nographic为无窗口运行,path为镜像文件路径,raw为格式,mtd为执行文件类型,-net nic添加虚拟网卡。
具体操作指南见:ubuntu下qemu使用:图文详解_ubuntu qemu_MasterHu的博客-CSDN博客。
遇到网络后端报错,原因可能是使用了旧版qemu,slirp被移除。
解决方法为:安装slirp库,删除build目录,重新配置qemu时加入--enable-slirp参数。
如果出现与ninja有关的错误,安装ninja-build库。
成功后,使用qemu-system-arm命令即可启动romulus镜像,无需指定路径。去签软件源码
登录系统,以root用户身份进入OpenBMC界面,访问.0.0.1:/redfish/...,通过ssh -p root@.0.0.1连接。
Travis让你的代码运行在ARM平台上
TravisCI的CI(Continuous Integration)功能允许我们持续对代码进行部署和测试,无需等到代码有大量修改后一次性进行。这是一个托管的分布式CI服务,用于构建和测试托管在Github上的软件项目。它能自动同步你的Github项目,并根据你的配置要求分配虚拟机或容器进行部署和测试。从今年月初开始,TravisCI支持在不同CPU架构(x、arm)的机器上编译和测试代码。以下以hello world为例,介绍如何在ARM平台上部署和运行代码。(本文假设读者熟悉git的基本命令,了解如何将代码提交到github,如不熟悉,请自行了解相关内容)
1. 准备条件
首先,创建一个仓库。在仓库目录右上角,点击“new”按钮,开始新建一个仓库。源码判定是录播给新仓库命名为TestTravisCI,写一些简短的描述,并选择“Initialize this repository with a README”。点击“Create repository”。
2. 授权TravisCI
给TravisCI授权后,它才能看到你在github上创建的仓库,并可以监控你的仓库提交。一旦有新的代码提交,TravisCI就会按照你的配置运行部署和测试代码。具体配置方法请参考yaml文件介绍。
2.1 打开网站,点击“Sign up with GitHub”,用你的github账号登录。
2.2 授权TravisCI,点击下图的“Authorize travis-pro”进行授权。
2.3 现在你的dashboard里可以看到你刚才创建的仓库。
3. 在TravisCI上部署并运行测试代码
3.1 Clone仓库到本地,进入该目录。
3.2 编写代码。
3.3 编写简单的Makefile。
3.4 编写.travis.yml,注意这里的arch配置有两种:amd和arm。表示将在这两种配置的机器上进行代码部署和测试。
3.5 将编写的代码提交到github上你的仓库,TravisCI会监控到新提交的代码,并运行.travis.yml中的script里的命令,这里会运行“make test”。
3.6 在TravisCI网站查看是否代码正确部署和运行。从下图中可以看到代码已经成功在amd和arm两类机器上部署并运行。
3.7 点击job 1.2可以看到详细的log输出。
至此,我们已经成功创建了一个仓库,并通过添加hello world的代码和yaml文件,使代码成功部署在ARM机器上,并成功运行了测试脚本。下面简单介绍一下yaml文件各个字段的含义。
4.1 language c:表示你的仓库的代码使用的那种语言,Travis支持以下语言。
4.2 compiler:指定编译器,可以指定多个,那么你的代码将被多个编译器分别编译并运行。
4.3 matrix:Travis.yml实际定义了一个矩阵的测试环境,通过matrix,我们可以指定只对某些配置进行测试。这里我们用的include,表示我们将对include中的配置组合进行测试。即在(linux,amd,gcc)和(linux,arm,gcc)两种配置的环境里测试。除了include,还有exclude,表示排除这些配置。具体参看/us...
4.4 script:在之前定义的配置环境里运行的脚本,这里将分别在matrix定义的两种环境里分别运行make test。
以上内容能帮助用户快速理解TravisCI的应用和配置方法,以及如何让代码在ARM机器上部署和测试。
GitLab ARM源码在信创统信UOS下的搭建
GitLab是一个基于Ruby on Rails语言开发的开源应用,提供私有化的Git项目仓库,可通过Web界面进行访问和管理。GitLab官方提供了多种安装方式,包括通过操作系统软件源安装、Docker容器部署以及源代码自编译安装。然而,GitLab官方构建的软件包和镜像主要针对X架构,并未提供针对ARMv8的版本。UOS操作系统支持多种CPU架构(AMD、ARM、MIPS、SW)和六种国产CPU平台(鲲鹏、龙芯、申威、海光、兆芯、飞腾)以及Intel/AMD的主流CPU,UOSV基于Debian stable,内核为4.,支持多种架构。由于GitLab官方Omnibus安装包并未支持arm架构,因此需要通过源码编译来安装GitLab-ce .1-stable在UOSV arm架构上。
在部署GitLab-ce .1-stable之前,首先需要搭建编译环境,包括Ruby 2.7.4、redis 6.2.4、git 2..0、Go:.、Postgres: 、Node: .x、Nginx:1..1。编译过程较为平顺,但安装Ruby、Node和Go时需要注意选择国内镜像源以确保顺利编译。GitLab-ce:-1-stable版本要求Git2..x或以上版本,推荐使用Gitaly提供的git版本。UOSV 版本若选择调试工具包,则系统自带的git版本不符合要求,需要手动安装Gitaly所提供的git版本,确保版本满足GitLab要求。安装完成后,系统会显示版本为2..0,满足要求。此外,还需安装GraphicsMagick支持GitLab引入的自定义图标功能,以及安装Postfix邮件服务器和exiftool以支持GitLab Workhorse功能。Ruby的安装也非常重要,更换国内Ruby Gem源能够提高编译过程的稳定性。
在完成编译环境搭建后,需为GitLab创建一个名为git的用户。GitLab .1及以后版本仅支持PostgreSQL数据库,GitLab-ce .1-stable需要PostgreSQL 或以上版本,并且需要pg_trgm扩展和btree_gist扩展。GitLab .0及以后版本要求Redis版本4.0或以上,推荐使用6.0或以上版本。部署GitLab-ce .1-stable需要编译三个部分:gitLab核心代码、gitlab-shell和GitLab-Workhorse。编译完成后,主要目录结构会根据部署环境进行相应调整。
配置GitLab的各个组件时,需要将源码配置调整为已搭建环境的配置。主要修改数据库配置为已安装的PostgreSQL 版本。安装过程中可能会遇到一些小问题,如使用sudo执行某些命令时的超时错误。解决这类问题通常需要检查和调整环境变量,确保git账号的环境变量能够正常工作。例如,通过修改/etc/sudoers文件,确保在执行sudo命令时保留所需的环境变量,如GOPROXY。安装完成后,GitLab及其环境应已正确配置,系统架构识别为arm,GitLab版本为.1,redis版本未读取但不影响使用。至此,GitLab在UOSV arm架构上成功部署完毕。
å¦ä½ç¼è¯arm linuxçgo
Golangä¹å°±æ¯Goè¯è¨ï¼ç°å¨å·²ç»åè¡å°1.4.1çæ¬äºï¼è¯è¨ç¹æ§ä¼è¶æ§åèåGoogle强大é å±±ä»ä¹çå°±ä¸å¤è¯´äºãGolangçå®æ¹æä¾äºå¤ä¸ªå¹³å°ä¸çäºè¿å¶å®è£ å ï¼éæ¾çæ¯å¹¶é没æåå¸ARMå¹³å°çäºè¿å¶å®è£ å ãARMå¹³å°æ²¡åæ³ç´æ¥ä»å®ç½ä¸è½½äºè¿å¶å®è£ å æ¥å®è£ ï¼å¥½å¨Golangæ¯æ¯æå¤å¹³å°å¹¶ä¸å¼æºçè¯è¨ï¼å æ¤å¯ä»¥éè¿ç´æ¥å¨ARMå¹³å°ä¸ç¼è¯æºä»£ç æ¥å®è£ ãæ´ä¸ªè¿ç¨ä¸»è¦å æ¬ç¼è¯å·¥å ·é ç½®ãè·åGolangæºä»£ç ã设置Golangç¼è¯ç¯å¢åéãç¼è¯ãé ç½®Golangè¡ç¯å¢åéçæ¥éª¤ã
注ï¼æ¬æéç¨æ èæ´¾åæµè¯ï¼å 为æ èæ´¾æ¯åºäºARMå¹³å°çã
1ãç¼è¯å·¥å ·é ç½®
æ®è¯´ä¸ä¸ªçæ¬çgolangç¼è¯å·¥å ·è¦ä½¿ç¨golangèªå·±æ¥åï¼ä½ç®åè¿æ¯ä½¿ç¨Cç¼è¯å·¥å ·çãå æ¤ï¼é¦å è¦é 置好Cç¼è¯å·¥å ·ï¼
1.1 å¨UbuntuæDebianå¹³å°ä¸å¯ä»¥ä½¿ç¨sudo apt-get install gcc libc6-devå½ä»¤å®è£ ï¼æ èæ´¾çRaspBianç³»ç»æ¯åºäºDebianä¿®æ¹çï¼æ以å¯ä»¥ä½¿ç¨è¿ç§æ¹æ³å®è£ ã
1.2 å¨RedHatæCentOS 6å¹³å°ä¸å¯ä»¥ä½¿ç¨sudo yum install gcc libc-develå½ä»¤å®è£ ã
å®è£ å®æåå¯ä»¥è¾å ¥ gcc --versionå½ä»¤éªè¯æ¯å¦æåå®è£ ã
2ãè·ågolangæºä»£ç
2.1 ç´æ¥ä»å®ç½ä¸è½½æºä»£ç å缩å ã
golangå®ç½æä¾golangçæºä»£ç å缩å ï¼å¯ä»¥ç´æ¥ä¸è½½ï¼ææ°ç1.4.1çæ¬æºä»£ç é¾æ¥ï¼/golang/go1.4.1.src.tar.gz
2.2 使ç¨gitå·¥å ·è·åã
golang使ç¨gitçæ¬ç®¡çå·¥å ·ï¼ä¹å¯ä»¥ä½¿ç¨gitè·ågolangæºä»£ç ãæ¨è使ç¨è¿ä¸ªæ¹æ³ï¼å 为以åå¯ä»¥éæ¶è·åææ°çgolangæºä»£ç ã
2.2.1 é¦å 确认ARMå¹³å°ä¸å·²ç»å®è£ äºgitå·¥å ·ï¼å¯ä»¥ä½¿ç¨git --versionå½ä»¤ç¡®è®¤ãä¸è¬linuxå¹³å°é½å®è£ äºgitï¼æ²¡æçè¯å¯ä»¥èªè¡å®è£ ï¼ä¸åå¹³å°çå®è£ æ¹æ³å¯ä»¥åèï¼/download/linux
2.2.2 å éè¿ç¨golangçgitä»åºå°æ¬å°
å¨ç»ç«¯cdå°ä½ æ³è¦å®è£ golangçç®å½ï¼ç¡®ä¿è¯¥ç®å½ä¸æ²¡æå为goçç®å½ãç¶å以ä¸å½ä»¤è·å代ç ä»åºï¼
git clone /go
大éå°åºå¯è½ä¼è·å失败ï¼å¨ä¸ç¿»å¢çæ åµä¸æè¯äºå 次é½æ²¡æåï¼åå 大家é½æçã好å¨googleå·²ç»å°golangä¹æ管å°githubä¸é¢ï¼æ以ä¹å¯ä»¥éè¿ä¸é¢å½ä»¤è·åï¼
git clone /golang/go.git
è§ç½ç»æ åµï¼ä¸è½½å¯è½éè¦ä¸å°æ¶é´ãæ2Mç带宽è±äºå°è¿ä¸¤ä¸ªå°æ¶æä¸è½½å®ï¼è½ç¶æ´ä¸ªé¡¹ç®ä¸è¿å åå = =
ä¸è½½å®æåï¼å¯ä»¥çå°ç®å½ä¸å¤äºä¸ä¸ªgoç®å½ï¼éé¢å³ä¸ºgolangçæºä»£ç ï¼å¨ç»ç«¯ä¸æ§è¡cd goå½ä»¤è¿å ¥è¯¥ç®å½ã
æ§è¡ä¸é¢å½ä»¤æ£åºgo1.4.1çæ¬çæºä»£ç ï¼å 为ç°å¨å·²ç»ææ°ç代ç æ交ä¸å»äºï¼ææ°ç代ç å¯è½ä¸æ¯æ稳å®çï¼
git checkout go1.4.1
è³æ¤ï¼ææ°1.4.1åè¡ççæºä»£ç è·åå®æ¯
3ã设置golangçç¼è¯ç¯å¢åé
主è¦æGOROOTãGOOSãGOARCHãGOARMå个ç¯å¢åééè¦è®¾ç½®ï¼å 解éå个ç¯å¢åéçæä¹ã
3.1 GOROOT
主è¦ä»£è¡¨golangæ ç»æç®å½çè·¯å¾ï¼ä¹å°±æ¯ä¸é¢gitæ£åºçgoç®å½ãä¸è¬å¯ä»¥ä¸ç¨è®¾ç½®è¿ä¸ªç¯å¢åéï¼å 为ç¼è¯çæ¶åé»è®¤ä¼ä»¥goç®å½ä¸srcåç®å½ä¸çall.bashèæ¬è¿è¡æ¶çç¶ç®å½ä½ä¸ºGOROOTçå¼ã为äºä¿é©èµ·è§ï¼å¯ä»¥ç´æ¥è®¾ç½®ä¸ºgoç®å½çè·¯å¾ã
3.2 GOOSåGOARCH
åå«ä»£è¡¨ç¼è¯çç®æ ç³»ç»åå¹³å°ï¼å¯éå¼å¦ä¸ï¼
GOOS GOARCH
darwin
darwin amd
dragonfly
dragonfly amd
freebsd
freebsd amd
freebsd arm
linux
linux amd
linux arm
netbsd
netbsd amd
netbsd arm
openbsd
openbsd amd
plan9
plan9 amd
solaris amd
windows
windows amd
éè¦æ³¨æçæ¯è¿ä¸¤ä¸ªå¼ä»£è¡¨çæ¯ç®æ ç³»ç»åå¹³å°ï¼èä¸æ¯ç¼è¯æºä»£ç çç³»ç»åå¹³å°ãæ èæ´¾çRaspBianæ¯linuxç³»ç»ï¼æ以è¿äºGOOS设置为linuxï¼GOARCH设置为armã
3.3 GOARM
表示使ç¨çæµ®ç¹è¿ç®åå¤çå¨çæ¬å·ï¼åªå¯¹armå¹³å°æç¨ï¼å¯éå¼æ5ï¼6ï¼7ãå¦ææ¯å¨ç®æ å¹³å°ä¸ç¼è¯æºä»£ç ï¼è¿ä¸ªå¼å¯ä»¥ä¸è®¾ç½®ï¼å®ä¼èªå¨å¤æéè¦ä½¿ç¨åªä¸ä¸ªçæ¬ã
æ»ç»ä¸æ¥ï¼å¨æ èæ´¾ä¸è®¾ç½®golangçç¼è¯ç¯å¢åéï¼å¯ç¼è¾$HOME/.bashrcæ件ï¼å¨æ«å°¾æ·»å ä¸é¢å 容ï¼
export GOROOT=ä½ çgoç®å½è·¯å¾
export GOOS=linux
export GOARCH=arm
ç¼è¾å®åä¿åï¼æ§è¡source ~/.bashrcå½ä»¤è®©ä¿®æ¹çæã
4ãç¼è¯æºä»£ç
ç¯å¢åéé ç½®å®æèªåå°±å¯ä»¥å¼å§ç¼è¯æºä»£ç ãå¨goç®å½ä¸çsrcåç®å½ä¸ï¼ä¸»è¦æall.bashåmake.bash两个èæ¬ï¼å¦å¤è¿æ两个all.batåmake.batèæ¬éç¨äºwindowå¹³å°ï¼ãç¼è¯å®é ä¸å°±æ¯æ§è¡å ¶ä¸ä¸ä¸ªèæ¬ï¼ä¸¤è çåºå«å¨äºall.bashå¨ç¼è¯å®æåè¿ä¼æ§è¡ä¸äºæµè¯å¥ä»¶ãå¦æå¸æåªç¼è¯ä¸æµè¯ï¼å¯ä»¥è¿è¡make.bashèæ¬ã使ç¨cdå½ä»¤è¿å ¥goä¸srcç®å½ï¼æ§è¡./all.bashæè ./make.bashå½ä»¤å³å¯å¼å§ç¼è¯ãç±äºç¡¬ä»¶æ åµä¸åï¼ç¼è¯èè´¹çæ¶é´ä¸åãå¨æçBåæ èæ´¾ç¼è¯è¿ç¨è±è´¹äºå°è¿å个å°æ¶ï¼ç¼è¯å®æåæ§è¡çæµè¯å¥ä»¶åè±è´¹äºå·®ä¸å¤ä¸ä¸ªå°æ¶ï¼æ»å ±è±è´¹äºä¸ä¸ªåå°æ¶å·¦å³ã
5ãé ç½®golangè¿è¡ç¯å¢åé
ç¼è¯å®æåï¼goç®å½ä¸ä¼çæbinç®å½ï¼éé¢å°±æ¯goçè¿è¡èæ¬ã为äºä»¥å使ç¨æ¹æ³ï¼å¯ä»¥å°è¿ä¸ªbinè·¯å¾æ·»å å°PATHç¯å¢åéä¸ãåæ ·ç¼è¾~/.bashrcæ件ï¼å 为åé¢è®¾ç½®è¿GOROOTç¯å¢åéæågoç®å½äºï¼æ以åªéè¦å¨æ«å°¾å ä¸
export PATH=$PATH:$GOROOT/bin
ä¿åååæ ·æ§è¡source ~/.bashrcå½ä»¤è®©ç¯å¢åéçæã
è³æ¤ï¼golangæºä»£ç ç¼è¯å®è£ æåãæ§è¡go versionåºè¯¥å°±è½çå°å½ågolangççæ¬ä¿¡æ¯ï¼è¡¨ç¤ºç¼è¯å®è£ æåã