自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 优雅的玩转TDA4VM

Linux TDA4VM 安装、使用、编译、启动

2023-04-23 09:55:45 2143 5

原创 uboot编译之编译过程二

Makefile核心是依赖和命令;对于每个目标,会先检查依赖,如果依赖存在则执行命令更新目标;如果依赖不存在,则会以依赖为目标,先生成依赖,依赖生成后,则执行命令。

2024-05-17 17:57:04 187

原创 U-boot编译make配置过程

u-boot从v2014.10版本后引入kBuild系统,使得其Makefile变的更加复杂;整个Makefile中,嵌套其他不同用途的Makefile,本文将进行简单的分析.

2024-05-17 17:55:05 228

原创 U-boot管脚复用

While the GPIO direction is set to input (GPIO_GDIR = 0), a read access to GPIO_DR does not return GPIO_DR data. Instead, it returns the GPIO_PSR data, which is the corresponding input signal value.实际上PSR才是读到的值。GPIO1_IO02代表GPIO1组寄存器的第02个寄存器,也就是第3位。

2024-05-17 17:49:43 432

原创 U-boot移植步骤

【代码】U-boot移植步骤。

2024-05-17 17:22:45 133

原创 U-boot启动内核之二bootm启动内核

整理自[uboot] uboot启动kernel篇(二)——bootm跳转到kernel的流程](bootm根据参数指向的镜像填充此结构体,然后使用结构体的内容填充kernel的启动信息,进行跳转。do_bootm_states根据states来判断要执行的操作。

2024-05-17 17:21:19 307

原创 U-boot启动内核

因此u-boot提供mkimage工具,用以生成u-boot可以识别的格式,称为uImage。c) **mkimage:**负责dtc的角色,通过解析its生成itb d) **image data file:**实际使用到的镜像文件。a) **its(image source file)文件:**类似于dts,负责描述image的信息,需要自行构造。b) **itb文件: **最终得到的image文件,类似于dtb文件,u-boot直接对其识别和解析。长度较大,需要额外信息较长。实现简单,长度较小;

2024-05-17 17:19:44 847

原创 第4章-U-boot驱动模型之四实例

id = UCLASS_SERIAL, // 这里的uclass_id和 uclass_driver中的一致.of_match = s5p_serial_ids, // 设备树种的compatible属性{ .compatible = "samsung,exynos4210-uart" }, //注意这里的compatible要和设备树中的一致{ }

2024-05-16 15:53:09 457

原创 第4章-U-boot驱动模型之三流程

根设备其实是一个虚拟设备,主要为其他设备提供一个挂载点。

2024-05-16 15:47:42 415

原创 第4章-U-boot驱动模型之二数据结构

有对应uclass driver并且下面挂有udevice的uclass才会被uboot自动生成。所有生成的都会挂接到gd->uclass_root链表上。不应该是dtb解析获得的吗?的确是通过dtb解析获得。uboot解析dtb以后动态生成。

2024-05-16 11:45:56 344

原创 第4章-U-boot驱动模型之一基本内容

在U-boot中引入驱动模型(driver model),为驱动的定义和范文接口提供统一的方法,提高驱动间的兼容性以及访问的标准性,u-boot中的驱动模型(DM)和kernel中的设备驱动模型类似,但是也有所区别。简单来说,u-boot把GD放在RAM区,使用它来存储全局数据, 以解决上述场景中无法使用全局变量的问题。根据上面可得GD的基地址存放在r9中,需要GD的时候,直接从r9寄存器中取的其地址即可。可以理解为具有相同属性的device对外操作的接口, 它与上层接口直接通讯,其驱动为。

2024-05-16 10:27:27 216

原创 第3章-U-boot命令行

uboot命令行

2024-05-15 17:59:30 159

原创 uboot设备树

uboot设备树

2024-05-15 17:57:58 391

原创 第1章:u-boot启动流程

ROM中的代码是固化的,无法修改。

2024-05-15 17:55:50 800

原创 U-boot基础

uboot基础

2024-05-15 17:52:33 120

原创 u-boot 和 rootfs/initramfs 启动 Raspberry Pi 4B

这篇文章的目的是了解嵌入式Linux的四个组成部分 —— 工具链、引导加载程序、内核、根文件系统 —— 通过使用最少的代码从头开始启动 Raspberry Pi 4 的命令。

2024-04-09 20:11:09 769

原创 一文了解fastboot

【代码】一文了解fastboot。

2024-04-09 16:08:11 779

原创 地平线J5生成镜像

board_id 是J5 dts中根节点下属性board_type 的值;board_type 属性顾名思义,它是为了区分不同J5板级差异的标记。当需要增加内核DTS与产品Boardid映射关系时,需要做后面小节的修改,以保证启动时能根据读取到的Boardid找到期望的DTB文件。程序中根据board_type决定使用哪一份dts 文件,各个dts 文件描述板级之间存在差异的J5 board。board_type 节点在J5 分为uboot 的部分与kernel 的部分。

2024-04-09 11:36:07 736

原创 RPC之rpclib

rpclib 是一个用于 C++ 的 RPC(远程过程调用)库,提供了客户端和服务器的实现。它使用现代 C++14 构建,因此需要较新的编译器。

2024-03-30 12:41:28 363

原创 汽车芯片市场集中度最高的领域:SerDes

显示屏领域,德州仪器大约占70%的市场,ADI的份额很低。CDR,即时钟数据恢复,对于高速的串行总线来说,一般情况下都是通过数据编码把时钟信息嵌入到传输的数据流里,然后在接收端通过时钟恢复将时钟信息提取出来,并用这个恢复出来的时钟对数据进行采样,因此时钟恢复电路对于高速串行信号的传输和接收至关重要。随着信号速率的增加,信号在传输过程中受损很大,为了在接收终端能得到比较好的信号波形,就需要对受损的信号进行补偿,预加重技术的思想就是在传输线的始端增强信号的高频成分,以补偿高频分量在传输过程中的过大衰减。

2024-03-30 11:24:12 971

原创 make menuconfig

文件进行更改时要小心,因为这些文件通常被用作某个硬件平台的默认配置。如果你的更改是针对一个具体的产品或板卡,建议使用一个具有描述性的名称,反映出配置文件的用途或目标平台。文件的内容确实反映了你的更改。如果你是在团队或社区环境中工作,并且需要将这些更改纳入版本控制系统,现在就可以准备提交你的更改。中的非默认配置选项保存到一个简化的配置文件,通常这会生成。确保使用的名称没有与现有的。文件,该文件仅包含不同于内核默认设置的选项。所做的修改同步到指定的配置文件,比如。文件,它位于你的源代码目录的顶层。

2024-03-28 20:20:59 304

原创 嵌入式Linux系统的启动流程

接下来就是完成 flash 和 ddr 初始化,为后面从 flash 加载 bin 文件,在 DDR 中运行程序提供基本环境,一般情况下都是从flash为0的位置,将flash中的bootloader 镜像文件加载到 RAM 或 DDR 中,该引导程序最终将uboot从flash 复制到 DDR 中,然后交接给 uboot 进行下一步处理。这一阶段主要对各类 app 应用进行初始化,如文中以通信设备为例,此处主要完成对转发芯片的初始化,会涉及一些基础转发表项的初始配置,端口和各种通信总线的初始化。

2024-03-22 10:09:10 211

原创 基于CA-SDA架构

只需在尾门一句“打开露营模式”,CD701就可以听懂指令开始变形,溜背上的后穹顶就会滑动打开,后厢储物空间进一步拓展,形成类似皮卡的后厢,还使座舱和尾箱将车子分成两个独立的封闭空间,装载自行车、滑板,甚至是摩托车。所谓“孵化创新”主要负责自动驾驶、智能座舱领域的前瞻技术和人才的储备,通过建立子公司,公司能更好地实践对体制、技术和产品的创新想法,并与外部资本和资源更多地对接,能够不受限于国企背景对盈利稳定性的追求,加速向智能低碳出行科技公司转型。一般认为,汽车智能化的发展,会部分重复手机智能化的发展路径。

2024-03-19 17:32:02 421

原创 docker && k3s相关命令

检查docker 守护进程是否在运行。创建一个新的容器并运行一个命令。查看docker相关信息。应用deployment。删除deployment。查看某个pod详细信息。启动docker服务。停止docker服务。重新启动已停止的容器。删除为none的镜像。查询某个pod的日志。

2024-03-19 16:35:38 222

原创 Carla安装

废话不多说,Let's start the party!

2024-03-19 14:54:30 781

原创 Carla的基本架构

对于从事自动驾驶领域的小伙伴们来说,Carla这个软件一定不陌生。自动驾驶往往需要大量的数据训练与安全测试,而在实际场景中收集数据成本较高,另外有许多corner cases也非常难以在现实生活测试,于是这款仿真软件便横空出世啦!Carla是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等。

2024-03-19 14:53:41 246

原创 ubuntu用户创建使用的本质

具体来说,在Ubuntu系统中,每个用户都有一个独立的home目录,其中包括用户的文件、设置和配置。因此,不同用户之间的环境是隔离的。具体来说 ,每个用户都有自己的用户ID,权限和进程空间。用户ID确保了文件和目录的访问权限,每个用户都有自己的权限组,相互之间是独立的。同时,进程空间也是独立的,一个用户的进程无法直接影响另一个用户的进程。此外,不同用户之间的环境变量和配置文件也是独立的,不会相互干扰。

2024-03-19 14:45:37 853

原创 Dockerfile 指令详解

VOLUME ["", ""...]VOLUME 之前我们说过,容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中,后面的章节我们会进一步介绍 Docker 卷的概念。为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在Dockerfile中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。这里的/data。

2024-03-19 11:18:21 619

原创 Uboot启动流程-上

本章主要讲解CPU上电到Uboot(或裸机)入口的启动流程和各个阶段实现的功能简单分析一下,主要是一些配置相关的寄存器地址与寄存器值,本教程提供给对启动流程好奇的同学学习,初学者仅当了解即可不影响后续的镜像构建。本章内容也为个人见解,如有不对之处欢迎指出上电—>设备初始化—>启动设备—>镜像头—>Uboot入口。

2024-03-18 11:50:42 852

原创 自学BSP

我认为bsp真正难度的地方,都不在上面说的这些,而是当你去bring up一个不熟悉的新芯片的时候,碰到运行不起来,特别是在打印都没出来的阶段的时候,你如何去定位,这个时候是必须要借助调试器的,对调试工具的熟悉程度,大概的猜测,验证的这个过程,并且往往是项目上比较紧急,一堆人看着你的时候,你能顶住压力最终引导成功那么你的bsp学习之路也就可以暂时告一段落了。bsp还需要解决的一个问题就是升级的问题,OTA,如何做到自升级,如何升级系统,如何网络升级,怎么不变砖,这个也是需要学习的一个地方。

2024-03-18 10:11:10 227

原创 在vscode进行容器内开发

Visual扩展允许您使用容器作为功能齐全的开发环境。它允许您打开容器内(或安装到容器中)的任何文件夹,并利用 Visual Studio Code 的完整功能集。告诉VS Code 如何使用定义良好的工具和运行时堆栈访问(或创建)该容器可用于运行应用程序或分离使用代码库所需的工具、库或运行时。工作区文件从本地文件系统挂载或复制或克隆到容器中。扩展在容器内安装和运行,它们可以完全访问工具、平台和文件系统。这意味着您只需连接到不同的容器就可以无缝切换整个开发环境。这使得 VS Code 能够提供。

2024-03-15 17:44:29 884 1

原创 Docker基础概念

Docker最初是dotCloud公司创始人在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在GitHub上进行维护。Docker项目后来还加入了 Linux 基金会,并成立推动开放容器联盟(OCI)。Docker自开源后受到广泛的关注和讨论,至今其GitHub 项目已经超过 5 万 7 千个星标和一万多个fork。甚至由于Docker项目的火爆,在2013年底,

2024-03-15 12:36:22 999

原创 RPC over DDS

为了使 RPC over DDS 自动化,可以使用接口定义语言(例如 OMG IDL)来声明过程的定义,并且解析工具可以生成代码来管理所需的 DDS 实体,特别是,它可以为以下对象创建“代理”:使用中间件技术(例如 Web 服务、Apache Thrift 等)中的典型方法来构建客户端和服务器的“骨架”。DDS 专注于完全以数据为中心的异步发布/订阅操作,任何分布式系统都可以使用这种模式进行设计,从而实现非常模块化和解耦的设计,但很多时候应该使用传统的客户端/服务器或请求/回复模式各种设计原因。

2024-03-15 11:22:24 346

原创 git常用总结及问题

为了解决这个问题,你需要使用其他认证方式,如个人访问令牌(Personal Access Token, 简称 PAT)或 SSH 密钥。作为密码认证的替代方案,你也可以使用 SSH 密钥进行认证。要使用 SSH 密钥,你需要生成一个 SSH 密钥对(如果你还没有的话),然后将公钥添加到你的 GitHub 账户中。当你下次执行 Git 操作时,输入你的 PAT 作为密码,它会被保存下来,以后就不需要再手动输入了。确保使用这种方法时,你的 SSH 客户端正在运行,并且可以正确处理密钥。生成密钥后,将公钥(

2024-03-14 15:55:23 388

原创 FastDDS-Gen源码编译

【代码】FastDDS-Gen源码编译。

2024-03-14 14:25:08 109

原创 智能汽车的SOA架构设计方法

在汽车上,应用比较广泛的主要是SOME/IP、HTTP、MQTT协议,其中SOME/IP满足车规要求,用于车内节点之间的服务通信,而HTTP和MQTT承接于互联网,多运用于无线网络,以便于车内节点和云端交互,但也可以用于车内有线以太网。分布式与集中式控制的本质区别在于,分布式阶段的整车功能是围绕一个个ECU作为主体进行设计的,而集中式阶段则需要从子系统甚至整车的软硬件资源所具备的不同能力的角度,对功能实现进行分层设计,核心思想是不同的层面具备不同的能力,其主要目的是软硬件资源和能力的解耦。

2024-03-13 15:29:48 880

原创 整车级SOA软件架构的革新

这种架构不仅可以提高系统的灵活性和可扩展性,还可以降低系统的复杂性和开发成本,为自动驾驶技术的广泛应用打下坚实的基础。在传统的汽车软件架构中,软件通常被直接嵌入到硬件中,这导致了软件的可扩展性和可维护性差,难以满足日益增长的功能需求。模块化:SOA将系统划分为独立的服务,每个服务都可以单独开发和部署,这大大提高了软件的开发效率和可维护性。兼容性:随着技术的不断发展,新的服务和功能不断涌现,需要考虑如何与旧的系统进行兼容和集成。标准化:制定统一的接口和服务规范,使得不同的服务可以相互通信和协作。

2024-03-12 19:54:55 421

原创 SOA服务导向架构的软件架构与开发

随着整车电子电气架构从分布式架构、域控制器架构到中央计算架构演变,汽车智能化产品在量产开发过程中面临诸多挑战,如开发周期缩短、算力与成本难以平衡、智驾场景功能持续升级迭代、研发投入持续加大等,如何提升整车架构下的协同开发效率,降低软件开发成本,成为当下行业关注的重要议题。NeuSAR SF提供统一的通信接口、通信能力和基础服务,将不同硬件、操作系统、通信总线、通信协议封装抽象,实现线程、进程、域控制器内异构核、车云之间服务调用的一致性,助力车企节约开发时间和研发投入。

2024-03-12 19:44:00 283

原创 自动驾驶的SOA中间件

(1)POSIX 标准简述因为车载SOA中间件以及基于POSIX 标准的中间件的应用程序,需要一个明确定义的操作系统运行环境标准来界定其能在什么样的环境中运行。最主要的标准是 POSIX.1 ,其正式称呼为IEEE 1003.1,被接纳为国际标准名称为ISO/IEC 9945。2017年的版本[28],近4000页的篇幅定义了“基本定义、系统接口、Shell和实用程序、基本原理”四大部分。Linux 和 QNX Neutrino 都适配了此标准。

2024-03-12 15:58:01 1011

原创 cmake版本更新-ubuntu编译构建

如果你想避免手动编译,也可以考虑使用 Kitware 的 APT 存储库,该存储库提供了最新版本的预编译 CMake 包,安装步骤可参考之前的回答。不过,通过源代码编译可以确保你能够获得针对你自己系统的最优化构建。但是,如果你的系统中之前使用的是通过包管理器安装的 CMake,它可能位于。安装编译好的 CMake 以覆盖旧版本。如果新版本的 CMake 并没有覆盖旧版本(即。你应该能够看到新版本的 CMake 输出。,选择所需版本的源代码压缩包,然后通过。目录下的 CMake。

2024-03-08 15:43:11 340

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除