谈论bringup我们到底在谈论什么?

【嵌入式】从零开始移植U-boot到mini2440(三)——CPU初始化篇 经过前两节的准备,我们现在可以开始肝u-boot的代码了 u-boot.lds 这是一个很容易被人忽略的一个文件,包括我自己,以前一般用keil的时候都是自动生成的,但其实想要理解一个芯片的启动代码,最好先从lds文件开始(不过在此之前,希望你能对编译-链接-运行有所理解)。众所周知一个程序会分成对应的几段,而lds文件的用途就是规定好这几段会放在什么地方。 而lds的重点是开头的这几句,与程序入口密切相关,程序虽然还是从_start开始,但与老版的u-boot不同,新版的多了__image_copy_st 阅读详情
AI摘要

本文概览了嵌入式软件开发过程中的Bringup阶段,解释了不同开发阶段的任务分配,强调了嵌入式软件工程师在此期间需掌握的核心知识,并简述了通用驱动的实现套路。

首先用两张图来概述一下bringup导致需要做什么工作。
首先我们要知道各个阶段的开发任务和实施人员。
在这里插入图片描述
作为一个嵌入式软件开发人员在bringup的过程中我们需要掌握的知识。
在这里插入图片描述
那嵌入式的驱动到底是怎么实现的呢?
下面这张图就大体描述了一个通用驱动的实现套路。当然在linux内核中往往还有层次结构的划分。这种层次结构一般为core,host,device的方式。
在这里插入图片描述
等我有时间把后面那些注释的知识补充上去。

Linux内核进程,线程,进程组,会话组织模型以及进程管理 唤醒睡眠状态任意的线程可以用wake_up_process,它可和唤醒处于深度睡眠状态的线程。结合最开始的图和代码,我们可以得到如下结论:1.kthead衍生的内核线程没有session pid,说人话就是所有的内核线程没有都没有操作控制台,不能通过控制台去操作控制。2.idle任务不会出现在for_each_process的处理循环中。3.每cpu_rq就绪队列中,不会将idle统计到nr_running中。 阅读详情

相关推荐

Sensor点亮 bringup总结

一般我们在调试一款sensor 的效果时,首先要先把他点亮,也叫 sensor bringup,这部分工作大都由驱动工程师来完成,但有时也是需要tuning 工程师来做的。但其实如果顺利的话,在sensor驱动中配置好sensor setting、i2c地址、sensor的chip_id,就可以出图了,但大多数情况下,往往不会那么顺利,会遇到很多的问题,这里总结一下,整个sensor bringup的流程,以及遇到的一些问题。

chenge1212的博客 1574

各类板子 bring up

bring up 的本意是指在产品开发的早期阶段,将一个新的嵌入式系统板卡、芯片组或模块加电并启动,然后测试其基本功能并使其运行起来的过程。

lyndon 2万+

安卓智能手机芯片上audio的bringup

对于智能手机来说,audio的基本功能如下:codec播放音乐,codec APP录音,codec电话,蓝牙播放音乐,蓝牙电话,codec VoIP电话,蓝牙 VoIP电话。上行时蓝牙耳机采集音频数据通过蓝牙空口发给蓝牙芯片,蓝牙芯片通过PCM bus 和ADMA把音频数据送给ADSP,ADSP处理后送给AP。做bringup时有个相对的先后顺序,比如调IPC通常是最先做的,因为它不仅是核间通信,ADSP上的log以及dump音频数据等debug手段也要靠它,可以说是基础设施了,它好了才可以调其他功能。

谈谈音频开发 1497

嵌入式Linux系统bringup 启动全景解析

系统bringup(系统启动)是指在硬件和软件层面将嵌入式系统从原始状态带到全功能运行状态的过程。这个过程就像人类从婴儿成长为成年人的过程,需要经历从基础到复杂的多个阶段。在嵌入式系统的bringup过程中,每一步都需要精确和细致的工作,以确保系统的稳定和高效运行。这些过程中的每一个决策都反映了人类在面对复杂系统时的思考和应对方式。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 3308

Let up bring up a linux.part2 [十一]

将linux的rootfs运行起来进入shell的世界

cxjczy1990的博客 792

高通开发系列 - Audio之音频的Bringup指导

高通开发系列 - Audio之音频的Bringup指导

fulinux的博客 5090

万字连载(上):如何 Bringup SoC 芯片

我一直认为战略上蔑视技术,战术上重视技术是很有必要的学习态度。这是一篇 Bringup SoC 芯片的指导手册,更是一篇了解整个系统流程的地图。不会深入了解每个模块的细节,但提供了整个系统的宏观描述,让你站在上帝视角俯视每个知识点,为了对读者更负责,我打算以付费的方式和大家见面,对技术细节有需求的小伙伴欢迎加我微信(rrjike)交流,保证超有所值。系统在启动的时候,无论...

Peter的专栏 6604

【Mtk Camera开发学习】01 MTK 平台Camera BringUp

MTK Camera bring up。MTK Camera开发学习~

1754

如何为 Flutter 新增一个 Framework 测试 shard 并通过 bringup 流程

如果你需要在 Flutter 仓库的 LUCI 持续集成环境中跑一套新的 Framework 测试(比如把一部分测试拆成独立任务、或引入一类全新检查),就不能只改测试代码就完事:新 shard 必须先在测试运行器 `dev/bots/test.dart` 里注册,再在根目录 `.ci.yaml` 中登记对应的 builder 条目,最后通过 bringup 机制让它在 master 上连续通过后才

gitblog_00590的博客 349

【SemiDrive源码分析】【驱动BringUp】37 - LCM 驱动 Bringup 流程

【SemiDrive源码分析】【驱动BringUp】37 - LCM 驱动 Bringup 流程

|~~~热爱生活、努力学习的小伙汁~~~| 1288

人大金仓集群部署(主备)

4.2 上传安装包镜像和授权文件到install目录下并授权。1、复制系统脚本到/opt/kingbase目录下(主节点)4.2 修改cluster_install.sh。回车进行下一步,直到出现以下界面,回复Y键回车。三、安装kingbase客户端段(都要安装)install目录作为安装包具体存放目录。4.1 修改install.conf文件。2、复制授权文件到安装目录下(主节点)3、修改ssh参数(节点都要配置)5、安装kingbase客户端。二、基本环境配置(都要配置)6、数据库集群安装(主节点)

edutech_wang的博客 1996

rk3588 camera bringup记录

rockchip 3588 camera bringup

MATLABCSD的博客 3201

MuJoCo柔性体仿真实战:从FlexComp建模到自定义模型导入

柔性体仿真是机器人交互研究中不可或缺的一环,MuJoCo作为高精度物理求解器,凭借高效的求解速度与批量并行能力,成为强化学习与软体抓取任务的热门选择。其FlexComp机制将连续材料离散为粒子-约束系统,以较低建模成本模拟布料、软组织等形变行为,相比Gazebo等平台更具实时性与可扩展性。技术价值体现在自定义柔性体建模与导入流程中:通过XML配置网格密度、间距与材料参数,即可生成贴合任务需求的软体垫子或硅胶抓手。在柔性抓取、颗粒抓手、医疗仿真等场景中,该方法能快速构建可训练的环境。围绕环境搭建、FlexCo

weixin_29045585的博客 160

高通平台Audio的bringup(TODO)

(TODO)

fanged的专栏 457

CMake是什么?为什么学习CMake

CMake的主要作用和重要性,包括其在跨平台构建中的应用、如何支持多种编译器及操作系统,以及它在管理大型和复杂项目中的优势。

小鱼酱的博客 3871

基于STM32设计的智能家居控制系统(华为云)_363

本项目设计并实现了一种基于STM32的智能家居控制系统,融合了语音识别、远程控制、环境监测与安全报警等功能。系统以STM32F103C8T6单片机为核心控制器,集成ESP8266 Wi-Fi模块实现与华为云IOT物联网平台的数据交互,采用MQTT协议进行通信。用户可通过语音识别模块控制风扇、空调、窗帘、卧室灯、客厅灯和电视等家电的开关操作,同时也可通过Android手机APP或Windows电脑上位机进行远程控制。系统还具备温湿度、光照强度、烟雾浓度和火焰检测功能,当检测到异常情况时,自动触发蜂鸣器报警并向

881

高通平台Camera的Bringup

本文以IMX219图像传感器为例,介绍了摄像头模块的硬件构成(镜头、马达、传感器等)及快速启动(bringup)流程。重点阐述了高通平台上的驱动开发要点:1. 设备树配置(供电、I2C、MIPI接口参数);2. 厂商驱动集成(分辨率、时钟、数据格式等图像属性);3. Chi-CDK框架下的XML配置(I2C地址、时序、MIPI参数);4. 调试方法(DTS验证、I2C通信检测、MIPI时序调优)。最后指出通过v4l2或CamX框架抓取RAW图像即标志bringup完成。全文聚焦模块化配置与高通平台适配,提供

fanged的专栏 486

5、数据计算与处理技巧全解析

本文深入解析了Tableau中的多种数据计算与处理技巧,涵盖LOD计算、日期与字符串处理、计数优化、数据混合限制及自定义总计等核心内容。通过实际案例和流程图,系统讲解了各技巧的应用场景、实现步骤与注意事项,并提供性能优化建议和常见问题解答,帮助用户提升数据分析效率与可视化精度。同时展望了未来数据计算技术的发展趋势,是Tableau用户进阶必备的全面指南。

peach的博客 82

嵌入式系统bringup通用流程

本文总结了嵌入式设备Linux系统bringup的通用流程和思路。首先明确bringup的核心目标是在1周内快速适配核心业务,如路由器需有线通、无线接入,摄像头需出流接入NVR。主要流程包括:1)编译框架适配,合入供应商SDK;2)固件打包;3)flash驱动适配;4)解决启动问题(uboot引导内核、内核启动、rootfs挂载);5)业务进程和关键驱动适配。关键技巧包括跳过大法、最小化编译、卡点分析和严格时间控制。通过分阶段里程碑管理,确保bringup工作高效完成。

qq_40036519的博客 1247

手把手教你学Simulink——基于Simulink的多轮PMSM同步驱动交叉耦合控制

摘要:本文针对多轮PMSM同步驱动系统的负载不均、参数差异等问题,提出基于Simulink的交叉耦合控制解决方案。通过实时补偿轮间同步误差,实现同步误差<1%、转矩脉动<5%的性能提升。文章详细介绍了系统架构、核心算法(包括PMSM数学模型和偏差耦合控制算法)、Simulink建模步骤及参数设置,并通过仿真验证了稳态和动态性能。同时提供了工程调试建议和完整代码实现,为多轮驱动系统开发提供实用参考。该方案计算量小,可移植性强,适用于电动汽车、AGV等应用场景。

MHD0815的博客 140

07RK3568 I2S主模式 FPGA

RK3568与fpga通过i2s0连接,fpga连接音频芯片ES8388,RK为i2s主模式。调试时发现可正常采集来自fpga的数据。不可发送数据至fpga。由于i2s后连接fpga这里用了Rockchip的dummy-codec,一个虚拟的编解码器。

qq_39451352的博客 303

【MTK Front Camera Bringup】

​ 通过上面的代码流程,可以知道上开机时,camera模块先会将所有的MCLK打开,然后对依次对对应的sensor进行上电,读取ID(判断I2C是否正常通讯)。

Sugar_wolf的博客 3461

基于simulink创建一个针对双馈异步风力发电机并网运行的仿真模型

摘要:本文详细介绍了基于Simulink的双馈异步风力发电机(DFIG)并网运行仿真建模方法。系统包含风速输入、风力机、双馈发电机、电力电子变换器、控制器和并网接口等模块,通过8个步骤完整呈现了建模流程,包括风速模拟、机械功率计算、发电机特性建模、变流器控制策略设计等关键环节。仿真可评估系统在不同风速条件下的动态响应、最大功率跟踪能力和发电效率,为风力发电系统的优化设计提供有效验证手段。模型可根据实际需求扩展环境因素和电网交互等细节,提高仿真精度。

amy_mhd的博客 333

嵌入式系统bringup指南:软硬件调试

嵌入式系统中的bringup(启动调试)是连接理论设计与实际系统的关键环节,包括硬件和软件两部分。硬件bringup验证电源、时钟、外设等基础功能,确保硬件通电后能稳定运行;软件bringup则使操作系统、驱动和应用程序适配硬件平台。实际项目中,需先完成硬件调试再移植系统、开发驱动,最终实现全链路稳定运行。该阶段对多传感器、深度学习等复杂项目尤为重要,是后续功能开发和产品化的基础。常见工具包括万用表、示波器、串口终端等,用于排查兼容性和稳定性问题。

small_write1的博客 1657

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ROS 2节点配置终极指南:cyberdog_bringup启动参数全解析

cyberdog_bringup是ROS 2框架下CyberDog机器人的核心启动模块,通过灵活的参数配置实现机器人各功能节点的高效管理。本文将详细解析其启动参数体系,帮助开发者快速掌握节点配置技巧,轻松实现机器人定制化启动流程。 ## 🤖 认识cyberdog_bringup模块 cyberdog_bringup作为CyberDog机器人的启动中枢,通过YAML配置文件和Python启动脚

gitblog_00151的博客 812

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

uboot bringup

最近在工作中碰到Uboot加载之后无反应的问题, 需要判断是硬件问题还是软件问题。硬件需要检查clock, 电压, boot的硬件配置(上下拉电阻), 以及PCB的质量,软件需要检查的就是DDR参数是否配置正确.         一般正常的bringup步骤如下:         1. 首先板子上电, 按住reset按钮, 连上超级终端, 配置好波特率115200, 在超级终端上选择发送文本文

生命的紫金颜色 3355

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: ARM汇编寄存器简介
下一篇: linux五大模块概述-----只描述了进程(linux内存管理,进程调度模块,进程间通信,文件系统模块,网络模块)
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值