首页 > 其他分享 >一个称职的嵌入式软件开发人员需要掌握了解的

一个称职的嵌入式软件开发人员需要掌握了解的

时间:2024-09-12 09:53:42浏览次数:3  
标签:开发人员 系统 嵌入式软件 构建 linux Soong android Android 称职

数据结构与算法,单片机原理,cortex M, A,R系列内核架构原理

     编译原理

     编程语言: asm, C/C++, java, python, C#, shell, bat, xml, json, perl, groovy(gradle使用的编写gradle脚本的), maven, kotlin, UML

     linux基本操作:基本命令的使用,ubuntu安装配置,安装包安装卸载,网络配置等

     linux内核源码情景分析:

     linux设备驱动开发:

     linux应用开发:

     u-boot:

     IntelliJ Idea/android studio 使用:

     android 四大组件:activiy, service, content provider, broad cast广播;

     android: ipc binder, bundle, intent, 多线程,多进程

     android系统原理:

     java应用开发:

     Android framework开发:

     jni开发:

     native c/c++开发:

     硬件抽象层开发:HIDL

     底层驱动开发:

     构建系统: cmake CmakeLists.txt, gnu make, makefile, qmake, mingw, soong, ninja, kconfig, kbuild, .config, xxx_defconfig, .mk, gradle(android studio构建app的)

            Android 系统的 SDK 构建系统是一个复杂且高度定制化的工具链,主要由 Soong、Blueprint、Make 和 Ninja 组成。Soong 和 Blueprint 提供了现代化、模块化的配置方式,而 Make 和 Ninja 则负责实际的构建任务。通过这些工具,开发者可以高效地编译、打包和部署 Android 操作系统及其相关组件。

            Android 系统的 SDK 构建系统是一个复杂且高度定制化的工具链,用于构建 Android 操作系统本身以及其相关的开发工具和库。这个构建系统主要基于以下几个关键组件:

            Soong:一个新的构建系统,逐步取代了旧的 Make-based 构建系统。

            Blueprint:一个用于定义 Soong 模块的框架。

            Make:传统的构建系统,仍然在某些部分使用。

            Ninja:一个高效的构建工具,用于执行 Soong 生成的构建命令。

    版本管理工具: TortoiseGit, git, repo

    HMI 解决方案:opengl(glad, glfw, glew), lvgl, guix, Qt, GLSurfaceView, surfaceFlinger, opengles, egl

    掌握一款MCU:STM32H7(正点原子,野火,迅为, 安富莱)

    了解几款款SOC:IMX6Q(NXP, 正点原子,野火,迅为),rk588(瑞芯微,迅为), mtk8678(联发科)

    了解几款操作系统:freertos, threadx, linux, android

    SOC裸机编程如同MCU编程类似:

    开发工具:vscode, visual studio(C#/C++/C), IntelliJ IDEA, android studio, iar, ghs, keil, jlink, canoe, virtualbox/vmware ubuntu, QAC, cppunit, google unit, java unit

    SQLite, room数据库:room 基于SQLite,简化了SQLlite的使用;linux用的mysql比较多

    hypervisor技术:裸机baremetal版本, 宿主机host版本(比如在Windows上的virtual box, VM,然后在其上再安装linux)

    面向对象的设计原则与设计模式:6大设计原则,比如开闭原则,21种设计模式比如单例模式等

    几款嵌入式服务栈:USB(tiny USB), filesystem, network, gui, 这些服务栈一般OS,芯片,调试器,软件服务厂商官网都有,比如微软有usbx, filex, netduox, threadx, guix, levelx, stm32有,segger公司有, ucos也有lwip

    硬件工具的掌握:示波器,万用表,逻辑分析仪,CAN, USB, SPI示波器,编程电源

    掌握的协议标准: OSI tcp, udp, ip, tls, ssh,  someip

    android opengles编程:

    GPU, NPU, CPU概念:

    图形处理工具:blender:3D建模软件, gimp:2维图形处理软件, cura:3D打印机切片软件, unity3D建模

    linux系统构建方式:传统buildroot, yocto

    CI/CD原理熟悉, docker配置使用

    通信协议:CAN, SPI, UART, I2C, USB, Ethernet(tcp/ip)

    硬件知识:数电,模电,能看懂电路原理图

标签:开发人员,系统,嵌入式软件,构建,linux,Soong,android,Android,称职
From: https://blog.csdn.net/qq_16030651/article/details/142165886

相关文章

  • NumPyro入门API和开发人员参考 pyro分布推理效果处理程序贡献代码更改日志入门教程使
    NumPyro文档¶NumPyro入门API和开发人员参考烟火元素分布推理效果处理程序贡献代码更改日志入门教程使用NumPyro的贝叶斯回归贝叶斯分层线性回归例如:棒球击球率示例:变型自动编码器例子:尼尔的漏斗例子:随机波动例如:亚麻和俳句可变推断参数化NumPyro模型的自动绘制不良后几何及......
  • 嵌入式软件--数电基础 DAY 5
    1.内存条、存储分级一般的寄存器,4bit就需要20多个mos管,造假十分不菲。采用电容控制导通,成本低速度慢。寄存器、内存条、硬盘三种存储设备。内存条比硬盘快10~100倍,寄存器比内存条快100倍。成本反之。硬盘最为持久。在电脑里将三种东西联系起来,需要主板。M.2插槽,是插硬盘......
  • 十年嵌入式软件开发面试资料分享
    liwen012024.08.17前言到今年,刚好毕业工作10年,作为求职者,十年间面试过不少公司。作为面试官,这些年也招牌面试过不少求职者。由刚毕业时的职场菜鸟,逐渐地也变成了现在菜鸟眼里的"老江湖"。4月份更新了一篇《不吹不黑:浅谈2024年嵌入式开发求职、面试、就业现状》,有不少同学对......
  • 嵌入式软件--数据结构与算法 DAY 12
    数据结构和算法是程序的核心,虽然在嵌入式应用中很少会用到,但了解认知这种思维过程是非常有必要的。一个好的程序员应该把数据结构和算法看的比代码更重要。1.数据结构是什么?定义1(宏观):数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。定义2(微观):数据结构......
  • 嵌入式软件--数据结构与算法 DAY 13
    在嵌入式中,对算法的要求不高,但顺序查找和冒泡排序是经典算法,必须掌握。1.算法定义算法是一个用于解决特定问题的有限指令序列(计算机可以执行的操作)。通俗的理解就是可以解决特定问题的方法。2.时间复杂度时间复杂度不是执行完一段程序的总时间,而是描述为一个算法中基本操作......
  • 嵌入式软件--C语言项目 客户信息管理系统
    考虑到目前C语言的学习是以为嵌入式做基础而进行的,项目所使用到的语法和结构都是嵌入式常用到的,这是较为特殊和针对性的项目,不与其他同名项目作比较。若有参考着谨慎借鉴。实现一个客户信息管理系统,功能包括添加客户、修改客户、删除客户、显示客户列表。1.需求说明(1)主菜单......
  • 嵌入式软件兼容性问题
    嵌入式软件的兼容性问题是确保软件在整个生命周期内能够正常运行和升级的关键因素。以下是一些主要的兼容性问题及解决方法:1.数据兼容性:在项目初期应制定能够满足整个项目所有数据交互需求的协议。例如,如果ID字段最初只设置为1个字节,可能在后期无法满足需求,导致必须修改协议。......
  • 嵌入式软件--C语言高级 DAY 8.5 相关函数
    递归函数在嵌入式中应用不常见,但对于学习C语言的我们,也要时刻记得它的作用和用法。此外还要记住sprintf尤其重要!还有时间戳!一、递归函数1.概念一个函数在函数体内又调用了本身。但必须满足两个条件:具有明显的结束条件;趋近于结束条件的趋势。2.递归原理#include<stdio.h>......
  • 嵌入式软件--C语言高级 DAY 7数组
    一、概念数组array:是多个相同类型数据按一定顺序排列的集合,并使用一个标识符命名。并通过编号(索引,亦称为下标或角标)的方式对这些数据进行统一管理。数组的长度=元素的个数标号角标是从0开始。二、define_array.c定义数组的三种形式:1.定义数组,可以先确定数组的元素个......
  • GitHub Models服务允许开发人员免费查找和试用AI模型
    今天,GitHub宣布推出一项新服务–GitHubModels,允许开发人员免费查找和试用人工智能模型。它将领先的大型和小型语言模型的强大功能直接带给GitHub的1亿多用户。GitHub模型将提供对领先模型的访问,包括OpenAI的GPT-4o和GPT-4omini、微软的Phi3、Meta的Llama3.......