Yocto bitbake and codeSonar
1 mdm
1.1 屏蔽mdm sysvinit的console输出
- uboot传入参数的时候传入console=null,这样Linux启动信息没有了
- 还需要在Linux配置中去掉Support for console on AMBA serial port
- 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
1.2 Ubuntu service
/usr/sbin/service
是个脚本,只是没有后缀.sh。
2 cmake
2.1 Yocto SDK
Download SDK install script, then run the script to install SDK to target directory.
SDK shell
2.2 musl libc dynamic-linker
$CC -o test test.c \
-Xlinker \
--dynamic-linker=/lib/ld-musl-aarch64.so.1
2.3 静态库
CMakeLists.txt中add_library()不指定SHARED,就是编译静态库。
2.4 静态可执行
CMakeLists.txt中target_link_libraries()添加-static,就是编译静态可执行。
3 bitbake
3.1 bitbake
.bb file
S = <Makefile directory>
SRCREV = <gerrit commit id>
SRC_URI += "file://0001-xxx.patch;patchdir=${WORKDIR}/git \
file://0002-xxx.patch;patchdir=${WORKDIR}/git"
0001-xxx.patch and 0002-xxx.patch are under current folder files.
3.2 Yocto添加应用程序
[26th-Apr-2022]
rm /path/to/bitbake.lock
For user space Makefile, refer to 3.3 of Android开发环境搭建和编译系统。
meta-xxx/recipes-bsp/hello-bsp/files/COPYRIGHT
meta-xxx/recipes-bsp/hello-bsp/files/Makefile
meta-xxx/recipes-bsp/hello-bsp/files/include
meta-xxx/recipes-bsp/hello-bsp/files/src
meta-xxx/recipes-bsp/hello-bsp.bb
SRC_URI = "file://COPYRIGHT"
SRC_URI += "file://Makefile"
SRC_URI += "file://include"
SRC_URI += "file://src"
S = "${WORKDIR}"
TARGET_CC_ARCH += "${LDFLAGS}"
do_compile () {
echo "${WORKDIR}"
oe_runmake
}
do_install () {
install -d ${D}${sbindir}
# hello_bsp name comes from Makefile.
install -m 0755 hello_bsp ${D}${sbindir}/
}
bitbake -c cleanall hello-bsp
bitbake hello-bsp
Build whole project:
core-image-base.bb
IMAGE_INSTALL_append = "hello-bsp"
bitbake core-image-base
3.3 bitbake cmake
[26th-Apr-2022]
Need install ninja-build in Linux PC, otherwise cmake could not generate Makefile under build directory.
The following first command in bb file is used to mkdir build folder for cmake, second command is used to pass parameters to cmake. Don't need add do_compile() and do_install() for cmake in bb file.
inherit pkgconfig cmake
EXTRA_OECMAKE += "-DXXX"
bitbake -c cleanall hello-bsp
bitbake hello-bsp
"inherit cmake" will call cmake.bbclass of OE build system.
3.4 standalone cmake showcase
wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
1) export BBPATH=/path/to/project
2) conf/bitbake.conf
CACHE = "${TMPDIR}/cache"
STAMP = "${TMPDIR}/stamps"
TMPDIR = "${TOPDIR}/tmp"
B = "${TMPDIR}"
T = "${TMPDIR}/work"
BBFILES = "${BBPATH}/xxx.bb"
3) classes/base.bbclass
addtask build
4) classes/cmake.bbclass
S="${PWD}/xxx/build"
cmake_do_build() {
. /path/to/environment-setup-aarch64-poky-linux
export SYSROOT_PATH=/path/to/sysroots/aarch64-poky-linux
rm -rf "${S}"
mkdir "${S}"
cd "${S}"
cmake ../ \
-DCMAKE_INSTALL_PREFIX=$SYSROOT_PATH/usr/ \
${EXTRA_OECMAKE}
make
make install
}
EXPORT_FUNCTIONS do_build
5) xxx.bb
DESCRIPTION="build xxx"
PN="xxx"
EXTRA_OECMAKE +="-Dxxx=1"
inherit cmake
6)
bitbake -s
bitbake xxx -vDD
3.5 Linux为普通用户添加Docker权限
apt install docker.io
sudo groupadd docker
sudo usermod -aG docker <username>
newgrp docker
3.6 bitbake列出所有的target
bitbake-layers show-recipes |grep <xxx>
bitbake <xxx>
4 codeSonar
MISRA C:2012
1) Create Project Tree and Create Project in codeSonar webserver.
2) csshiftleft/scripts/config.ini
ProjectName = the code sonar reports directory in webserver.
3) csshiftleft/build/module_build.sh
Add build commands to this file.
4) build
cd csshiftleft/scripts/
python3 codesonarbuild.py
codeSonar userName and Password are the Windows login userName and Password.
5 ctest
add_definitions()需要加在ADD_SUBDIRECTORY()之前,不然宏不起作用。
ADD_SUBDIRECTORY(unittest)
enable_testing()
add_test(
NAME ${BINARY_NAME}
COMMAND ${BINARY_NAME} # It will call gtest main()
<arg_list>)
相关文章:
Yocto bitbake and codeSonar
1 mdm 1.1 屏蔽mdm sysvinit的console输出 - uboot传入参数的时候传入consolenull,这样Linux启动信息没有了 - 还需要在Linux配置中去掉Support for console on AMBA serial port - 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100…...
gpt-computer-assistant - 极简的 GPT-4o 客户端
更多AI开源软件: AI开源 - 小众AIhttps://www.aiinn.cn/sources gpt-computer-assistant是一个将 ChatGPT MacOS 应用程序提供给 Windows 和 Linux 的替代工作。因此,这是一个全新且稳定的项目。此时,您可以轻松地将其作为 Python 库安装&am…...
中国移动量子云平台:算力并网590量子比特!
在技术革新的浪潮中,量子计算以其独特的并行处理能力和指数级增长的计算潜力,有望成为未来技术范式变革和颠覆式创新应用的新源泉。中国移动作为通信行业的领军企业,致力于量子计算技术研究,推动量子计算产业的跨越式发展。 量子云…...
Vue 3 中的计算属性(Computed Properties)详解
目录 Vue 3 中的计算属性(Computed Properties)详解 引言 什么是计算属性? 创建和使用计算属性 示例 1:基本用法 示例 2:带有 getter 和 setter 的计算属性 计算属性 vs 方法 Vue 3 中的计算属性(Co…...
AWS S3 权限配置与文件上传下载指南
本文介绍如何配置 AWS S3 存储桶的访问权限,实现 EC2 实例上传文件和本地用户下载文件的功能。 权限配置 © ivwdcwso (ID: u012172506) 1. EC2 角色上传权限 创建 IAM 角色并附加以下策略,允许 EC2 实例上传文件到 S3: {"Version": "2012-10-17&qu…...
6. 一分钟读懂“抽象工厂模式”
6.1 模式介绍 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品…...
CV(2)-插值和卷积
前言 仅记录学习过程,有问题欢迎讨论 看看年前可以学到哪。 频率: 灰度值变化程度的指标,是灰度再平面上的梯度幅值: 幅值: 是在一个周期内,交流电瞬时出现的最大绝对值,也是一个正弦波,波…...
学习threejs,通过设置纹理属性来修改纹理贴图的位置和大小
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Texture 贴图 二、…...
fastadmin 后台插件制作方法
目录 一:开发流程 二:开发过程 (一):后台功能开发 (二):功能打包到插件目录 (三):打包插件 (四):安装插件…...
9. 一分钟读懂“策略模式”
9.1 模式介绍 策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。 策略模式的核心思想是:定义一系列可互换的算…...
65页PDF | 企业IT信息化战略规划(限免下载)
一、前言 这份报告是企业IT信息化战略规划,报告详细阐述了企业在面对新兴技术成熟和行业竞争加剧的背景下,如何通过三个阶段的IT战略规划(IT 1.0基础建设、IT 2.0运营效率、IT 3.0持续发展),系统地构建IT管理架构、应…...
Android 单元测试断言校验方法 org.junit.Assert
判断布尔值 assertTrue assertFalse 判断对象非空 assertNull(object); 案例: PersistableBundle result Util.getCarrierConfig(mockContext, subId);assertNull(result); 判断是否相等 assertEquals("mocked_string", result.toString()); package or…...
亚马逊云(AWS)使用root用户登录
最近在AWS新开了服务器(EC2),用于学习,遇到一个问题就是默认是用ec2-user用户登录,也需要密钥对。 既然是学习用的服务器,还是想直接用root登录,下面开始修改: 操作系统是࿱…...
用点云信息来进行监督目标检测
🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 概述问题分析Making Lift-splat work well is hard深度不准确深度过拟合不准确的BEV语义 模型总体框架显性深度监督 深度细化模块演示效果核心…...
Navicat连接服务器MySQL
Navicat连接服务器MySQL 1. Navicat连接服务器MySQL2. 如何查看MySQL用户名和密码3. 修改MySQL登录密码4. 安装MySQL(Centos7)遇到错误和问题 1. error 1045 (28000): access denied for user ‘root’‘localhost’ (using password:yes) 1. Navicat连接服务器MySQL 选择数据…...
FastAPI 响应状态码:管理和自定义 HTTP Status Code
FastAPI 响应状态码:管理和自定义 HTTP Status Code 本文介绍了如何在 FastAPI 中声明、使用和修改 HTTP 状态码,涵盖了常见的 HTTP 状态码分类,如信息响应(1xx)、成功状态(2xx)、客户端错误&a…...
【人工智能数学基础篇】线性代数基础学习:深入解读矩阵及其运算
矩阵及其运算:人工智能入门数学基础的深入解读 引言 线性代数是人工智能(AI)和机器学习的数学基础,而矩阵作为其核心概念之一,承担着数据表示、变换和运算的重任。矩阵不仅在数据科学中广泛应用,更是神经网…...
RNACOS:用Rust实现的Nacos服务
RNACOS是一个使用Rust语言开发的Nacos服务实现,它继承了Nacos的所有核心功能,并在此基础上进行了优化和改进。作为一个轻量级、快速、稳定且高性能的服务,RNACOS不仅包含了注册中心、配置中心和Web管理控制台的功能,还支持单机和集…...
JAVA |日常开发中JSTL标签库详解
JAVA |日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…...
Apache HttpClient 4和5访问没有有效证书的HTTPS
本文将展示如何配置Apache HttpClient 4和5以支持“接受所有”SSL。 目标很简单——访问没有有效证书的HTTPS URL。 SSLPeerUnverifiedException 在未配置SSL的情况下,尝试消费一个HTTPS URL时会遇到以下测试失败: Test void whenHttpsUrlIsConsumed…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
