SSD202D-boot-IO复用功能

news2024/9/25 17:17:07

SSD202D-logo分区添加dtb_旋风旋风的博客-CSDN博客

可以参考该博客,当然我为了兼容以前的固件又优化了该思路:

直接把对应的包添加在logo_202d的尾部,这样就不会影响原来的包

 这两张就是修改之后的结构,只在尾部追加DTB

其中ABC结构体

//A结构体- (12 size)
typedef struct
{
	u8 au8Tittle[8];
	u32 u32DataInfoCnt;
}SS_HEADER_Desc_t;
//B结构体- (56 size)
typedef struct
{
	SS_SHEADER_DataInfo_t stDataInfo;
	u32 u32FirstUseOffset;
	u32 u32DispBufSize;
	u32 u32DispBufStart;
}SS_SHEADER_DispInfo_t;
//C结构体- (44 size)
typedef struct
{
	u8 au8DataInfoName[32];
	u32 u32DataTotalSize;
	u32 u32SubHeadSize;
	u32 u32SubNodeCount;
}SS_SHEADER_DataInfo_t;

具体可以参考下图

这些不细说,就是在kernel中先多保存一份kernel.dtb出来放到对应打包路径等待使用

diff --git a/kernel/arch/arm/boot/Makefile b/kernel/arch/arm/boot/Makefile
index ce2fcb6a2..ec6124f49 100755
--- a/kernel/arch/arm/boot/Makefile
+++ b/kernel/arch/arm/boot/Makefile
@@ -28,6 +28,7 @@ _BUILTIN_DTB_NAME=$(strip $(shell echo ${CONFIG_SS_DTB_NAME}))
 ifneq ($(_BUILTIN_DTB_NAME),)
 ifneq ($(wildcard arch/arm/boot/dts/$(_BUILTIN_DTB_NAME).dts),)
 SS_DTB_NAME=arch/arm/boot/dts/$(_BUILTIN_DTB_NAME).dtb
+KERNEL_DTB_NAME=arch/arm/boot/kernel.dtb
 endif
 endif

@@ -88,6 +89,7 @@ ifeq ($(CONFIG_SS_BUILTIN_DTB), y)
                        echo "  IMAGE   $(obj)/Image"; \
                        echo "  BNDTB ${SS_DTB_NAME}"; \
                        python scripts/ms_builtin_dtb_update.py $(obj)/Image ${SS_DTB_NAME}; \
+                       cp -rvf ${SS_DTB_NAME} ${KERNEL_DTB_NAME}; \
                        echo; \
                fi;
                #update Image-fpga DTB

然后再project中将检查是否有dtb,如果有就把dtb放进尾部

diff --git a/project/image/image.mk b/project/image/image.mk
index 174f8dddc..81040db12 100755
--- a/project/image/image.mk
+++ b/project/image/image.mk
@@ -7,6 +7,8 @@ BOOT_TARGET_FSIMAGE:=$(foreach n,$(BOOT_FSIMAGE_LIST),$(n)_$(FLASH_TYPE)_$($(n)$
 BOOT_TARGET_NOFSIMAGE:=$(foreach n,$(filter-out $(BOOT_FSIMAGE_LIST), $(BOOT_IMAGE_LIST)),$(n)_nofsimage)
 MKYAFFS2IMAGE=/work/projects/build/linux/sbin/mkyaffs2image610
 MKCRAMFS=$(shell which mkcramfs || which mkfs.cramfs)
+KERNEL_DTB_FILE:=$(PROJ_ROOT)/../kernel/arch/arm/boot/kernel.dtb
+KERNEL_DTB_BIT:=$(shell test -f $(KERNEL_DTB_FILE) && echo yes)

 ifneq ($(shell id -u),0)
 FAKEROOT:=fakeroot
@@ -149,6 +151,9 @@ logo_nofsimage:
        $(PROJ_ROOT)/image/makefiletools/bin/dispcfggen -c -o $(logo$(RESOUCE))_202d -p $(LOGO_ADDR) -s $(BOOTLOGO_BUFSIZE) -d $(DISP_OUT_NAME)
        $(PROJ_ROOT)/image/makefiletools/bin/logogen -a -i $(PROJ_ROOT)/board/ini/misc/$(BOOTLOGO_FILE) -o $(logo$(RESOUCE))_202d
        $(PROJ_ROOT)/image/makefiletools/bin/logogen -a -i $(PROJ_ROOT)/board/ini/misc/upgrade.jpg -o $(logo$(RESOUCE))_202d
+ifeq ($(KERNEL_DTB_BIT),yes)
+       $(PROJ_ROOT)/image/makefiletools/bin/logogen -d -i $(KERNEL_DTB_FILE) -o $(PROJ_ROOT)/image/output/images/logo_202d
+endif

 %_$(FLASH_TYPE)_ramfs_fsimage:
        @echo [[$@]]

用到logogen这个工具,于是我加了点逻辑

diff --git a/project/image/makefiletools/src/rawgenerator/logo_data_main.c b/project/image/makefiletools/src/rawgenerator/logo_data_main.c
index 8782fe19d..7156b83dc 100755
--- a/project/image/makefiletools/src/rawgenerator/logo_data_main.c
+++ b/project/image/makefiletools/src/rawgenerator/logo_data_main.c
@@ -39,6 +39,7 @@ typedef struct
 #ifndef ALIGN_DOWN
 #define ALIGN_DOWN(val, alignment) (( (val)/(alignment))*(alignment))
 #endif
+u32 u32Flag;

 static s32 _FileSize(const s8* ps8Name)
 {
@@ -59,7 +60,10 @@ static s32 SS_SHEADER_InsertPictureData(FILE *fp, const s8 *ps8SrcFile)

     printf("Ready to open logo file %s\n", ps8SrcFile);
     memset(&stPictureInfo, 0, sizeof(SS_SHEADER_P

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elementPlus + table 树形懒加载 新增,删除,修改 局部刷新

#直接上代码# 1.表格数据 2.数据源 <m-table ref"cTable" v-if"Object.keys(props.tableData).length" :options"props.tableOptions" :data"props.tableData.data" :isLoading"props.tableData.loading" elementLo…

数据结构与算法(四):栈与队列

栈与队列 我们一般把栈与队列合在一块讨论&#xff0c;因为他们具有相似的性质。 栈&#xff1a;栈是限定仅在表尾进行插入和删除操作的线性表&#xff0c;所以栈又称为后进先出&#xff08;LastIn First Out&#xff09;的线性表&#xff0c;简称LIFO结构。 队列&#xff1…

【C++二叉树】进阶OJ题

【C二叉树】进阶OJ题 目录 【C二叉树】进阶OJ题1.二叉树的层序遍历II示例代码解题思路 2.二叉搜索树与双向链表示例代码解题思路 3.从前序与中序遍历序列构造二叉树示例代码解题思路 4.从中序与后序遍历序列构造二叉树示例代码解题思路 5.二叉树的前序遍历&#xff08;非递归迭…

C++学习笔记--函数重载(2)

文章目录 1.3、Function Templates Handling1.3.1、Template Argument Deduction1.3.2、Template Argument Substitution 1.4、Overload Resolution1.4.1、Candidate functions1.4.2、Viable functions1.4.3、Tiebreakers 1.5、走一遍完整的流程1.6、Name Mangling1.7、总结 1.…

SpringCloud-Hystrix 服务降级与熔断

接上文SpringCloud-Feign 问题描述 为了解决上述情况&#xff0c;SpringCloud提供了Hystrix熔断器组件&#xff0c;如同保险丝。服务降级则不会直接返回错误&#xff0c;而是提供一个补救措施&#xff0c;正常响应给请求者。 1.服务降级 基于借阅管理服务&#xff0c;不开启…

JavaScript-----个性名片案例展示

目录 前言&#xff1a; 效果展示 代码&#xff1a; html代码 CSS代码 图片资源&#xff1a; 前言&#xff1a; 今天我们就通过刚刚学习的JavaScript知识点以及前面学习了的html和CSS的知识点去做一个小作品&#xff0c;这是一个个性名片的案例&#xff08;有代码资源和图片…

【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门

Markdown编辑器如何使用-csdn博客编写入门 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…

【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用

【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29)&#xff0c;对照组的康复训练指导采用讲解示范法&#xff0c;观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …

spring-data-jpa编程中,方法参数的数据类型不一致引发的问题记录

一、代码结构 domain model BookDistributionRepository.java infrastructure.persistence jpa BookDistributionRepositoryJPA.javaBookDistributionRepositoryJPAImpl.java 1、接口BookDistributionRepository.java public interface BookDistributionRepository {List&…

锯齿波-RC充放电路

锯齿波电路根据应用的不同又叫扫描电路、时基断电路&#xff0c;在一些仪器仪表等电子设备中经常用到的一种单元电路。锯齿波信号的明显的特征是电压或是电流先随时间呈线性增长&#xff0c;再迅速下降&#xff0c;然后再线性上升&#xff0c;再迅速下降&#xff0c;如此循环。…

mysql8 Found option without preceding group错误

这个错误说起来是真的坑&#xff0c;今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误&#xff0c;死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动&#xff0c;刚开始以为是my.ini里的配置选项不对&#xff0c;一个一个筛查后依…

【群智能算法改进】一种改进的鹈鹕优化算法 IPOA算法[2]【Matlab代码#58】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始POA算法2. 改进后的IPOA算法2.1 随机对立学习种群初始化2.2 动态权重系数2.3 透镜成像折射方向学习 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始POA算法…

09:STM32-------USART串口通信+串口数据包

目录 一:串口协议 1:通信接口 2:串口通信 3:硬件电路 4:电平标准 5:串口参数及其时序 二:USART介绍 1:简历 2:USART框图 3:USART的基本结构 4:数据帧 5: 波特率发生器 6:数据模式 三:案例 A:串口发送--单发送 1:连接图 2:函数介绍 3:代码 B:串口发送接收 1…

微服务06-Dockerfile自定义镜像+DockerCompose部署多个镜像

常见的镜像在DockerHub能找到&#xff0c;但是我们自己写项目得自己构造镜像 1 镜像结构 作用&#xff1a;提高复用性&#xff0c;当应用需要更新时&#xff0c;不再是整个系统重装进行更新 &#xff0c;而是对需要更新的部分进行更新&#xff0c;其他地方不动——>这就是分…

第67步 时间序列建模实战:ARIMA建模(Stata)

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们使用Stata进行SARIMA模型的构建。 同样&#xff0c;使用某省2005年1月至2016年12月AIDS死亡率的时间序列数据。 二、Stata建立SARIMA实战 &#xff08;1&#xff09;问GPT怎么用 咒语&#xff1a;我有一批{数…

【Arduino28】LM35温度传感器实验

硬件准备 LM35温度传感器&#xff1a;1 个 面包板&#xff1a;1个 杜邦线&#xff1a;3根 硬件连线 VCC引脚接 5V 电源 OUT引脚接 A0接口 GND引脚接 GND 接口 软件程序 #define temp_pin A0 //温度传感器引脚void setup(){Serial.begin(9600); }void loop(){float val …

【C++】STL-常用算法-常用查找算法

0.前言 1.find #include <iostream> using namespace std;// 常用查找算法 find #include<vector> #include<algorithm>//查找 内置数据类型 void test01() {vector<int>v;for (int i 0; i < 10; i){v.push_back(i);}//查找 容器中 是否有 5 这个元…

C--小Why的商品归位-- 牛客小白月赛77

输入 3 3 1 1 2 1 3 2 3 输出 2 解析&#xff1a; 先不考虑购物车的容量&#xff0c;即购物车容量为无限大。这样我们可以通过每种货物上车、下车的时间计算出每一个时间点内&#xff0c;购物车中货物的数量。 统计出所有时间点内&#xff0c;货物数量的最大值max。这个最大…

CRM软件系统的三大优势

随着市场环境的不断发展和变化&#xff0c;企业的管理模式也在不断地调整。CRM管理系统是企业数字化转型的重要一环&#xff0c;可以帮助企业更好地管理客户关系和市场销售&#xff0c;提高企业运营效率和经济效益&#xff0c;CRM管理系统有哪些优势呢&#xff1f;今天小编就来…

Vue2+Vue3基础入门到实战项目(七)——智慧商城项目

Vue 核心技术与实战 智慧商城 接口文档&#xff1a;https://apifox.com/apidoc/shared-12ab6b18-adc2-444c-ad11-0e60f5693f66/doc-2221080 演示地址&#xff1a;http://cba.itlike.com/public/mweb/#/ 01. 项目功能演示 1.明确功能模块 启动准备好的代码&#xff0c;演示…