AX32xx SDK 系统架构分析基于提供的 main.c 文件和项目结构,AX32xx SDK 采用了模块化的嵌入式系统架构,具有以下特点:
1. 整体架构概览系统初始化流程12// 从 main() 函数可以看出系统启动流程:init() → configSystem() → upgrade() → taskStart() → taskService()
核心组件层次
硬件抽象层 (HAL):底层硬件驱动和控制
系统服务层:任务管理、消息队列、定时器服务
设备管理层:统一的设备驱动框架
应用管理层:多任务系统和UI管理
用户界面层:UI管理和资源管理
2. 任务管理系统任务注册与管理
任务结构:定义了 sysTask 结构体,包含任务名称、参数和操作函数
任务类型:
TASK_POWER_OFF - 最高优先级
TASK_VIDEO_RECORD - 视频录制
TASK_PHOTO_ENCODE - 照片编码
TASK_PLAY_BACK - 回放
TASK_USB_DEVICE - USB设备
TASK_MAIN_MENU - 主菜单
TASK_GAME - 游戏功能
...
需要下载的软件
Google
123账号:linuxcodeguru@gmail.com密码:xjs13149420
Git管理
Clash Verge
1订阅地址:https://xn--cp3a08l.com/api/v1/client/subscribe?token=d608b3e060cbad7d8ac8fee2daebbbad
Wsl
1wsl --import Ubuntu_22.04 D:\WSL\Ubuntu_22.04 D:\WSL\ubuntu__backup.tar
Vscode
1https://blog.csdn.net/weixin_43239880/article/details/129146513
1.下载文件图标插件
2.给Vscode加背景图片
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748//Backgroud:Editor"background.editor": ...
2. 网络编程的流程服务器端流程:
创建套接字(socket)
绑定 IP 与端口(bind)
设置监听(listen)
等待客户端连接(accept)
数据收发(send/recv)
关闭连接(close)
客户端流程:
创建套接字
连接服务器(connect)
数据收发
关闭连接
3. 动态库与静态库的区别
动态库(.so):运行时加载,可执行文件小,更新库即可无需重编整个程序。
静态库(.a):编译时链接,可执行文件大,库变动需重新编译。
4. Linux 环境移植做了什么将 Linux 内核等关键文件进行压缩打包,复制到另一台设备,解压即可使用。
5. 简述 I²C,通信需要多少时钟周期
I²C(Inter-Integrated Circuit,集成电路间通信):同步、半双工,两根线:SCL、SDA。
发送 1 字节需 9 个时钟周期(8 位数据 + 1 位 ACK)。
6. 示波器和万用表做了什么
示波器:观察波形、测量时序。
万用表:测量电压、电阻、通断性。
7. 怎么测试文件读取速度(流程)
获取起始时间与结束时间
统计读取到的总字节数
...
一、4 层 PCB 设计专题1. 4 层 PCB 中最利于信号完整性的经典层叠结构是?
选项
:
A. 顶层(信号)→内层 1(地)→内层 2(电源)→底层(信号)
B. 顶层(电源)→内层 1(信号)→内层 2(信号)→底层(地)
C. 顶层(信号)→内层 1(信号)→内层 2(地)→底层(电源)
D. 顶层(地)→内层 1(信号)→内层 2(电源)→底层(信号)
答案:A
解析:该层叠让信号层紧邻地 / 电源层,可降低电磁干扰、减少信号反射,是保障信号完整性的经典方案。
拓展设问:若产品对电源抗干扰要求极高,4 层 PCB 层叠是否需要调整?如何调整?
2. 4 层 PCB 设计中,为减少信号串扰,顶层与底层的信号线走向应?
选项
:
A. 保持平行
B. 顶层水平、底层垂直(正交)
C. 随意交叉
D. 沿板边同向布线
答案:B
解析:正交走线可减少平行走线的电磁耦合,大幅降低层间信号串扰。
拓展设问:除了正交走线,还有哪些 PCB 布线技巧能减少信号串扰?
3. 4 层 PCB 的地平面设计中,以下正确的做法是?
选项
:
A. 为方便布线,在地平 ...
问题在提交代码或者拉取代码的时候,如果每次git都要输入用户名密码
解决方法
终端输入
1git config --global credential.helper store
在git push /pull 的时候输入一次账号和密码后,之后就不用在输账号和密码了。
引脚图
WSL配置
安装依赖:
1sudo apt-get install git wget flex bison gperf python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 net-tools
克隆 ESP 工具仓库:
1git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
克隆 ESP-IDF 仓库:
1git clone --recursive https://github.com/espressif/esp-idf.git
克隆 ESP32 板子仓库:
1git clone --recursive https://gitee.com/vi-iot/esp32-board.git
USB/IP 设备共享与管理USB/IP 是用于在 Windows 平台上进行远程 USB/IP 项目的守护进程,用于管理和共享 USB 设备。
步骤
...
💡通用技能类问题(对应你的技能描述部分)
你在项目中是如何进行模块化编程的?→ 考点:代码结构设计、函数封装、模块解耦思维。
在我的项目中,我尽量将每个功能进行独立封装,使其尽可能独立。比如在车控系统中,油门,刹车,胎压监控等功能模块分别设计成独立的单元,其实也是模仿了SquareLIne Studio低代码ui设计软件导出的ui文件夹格式,每个模块都通过接口与其他模块进行通信。这不仅提高了代码的可维护性,也方便后期的扩展和调试。每个模块有明确的输入和输出,减少了模块间的依赖关系,确保了系统的稳定性。
你使用 FreeRTOS 时,任务之间的通信是如何实现的?→ 考点:队列(Queue)、信号量(Semaphore)、互斥锁(Mutex)。
在FreeRTOS时,任务之间的通信通常使用信号量或队列。在我的遥控器项目中,我使用了队列集来传递来自遥感电位器ADC传感器的数据。此外,任务间需要同步时,我也是用了互斥锁信号量来保护共享内存。
你在多线程编程中如何避免资源竞争?→ 考点:互斥锁、信号量、临界区。
在多线程编程中,为了避免资源竞争,我使用了互斥锁(mutex)和信 ...
大家好,我是张艺城,毕业于赣东学院自动化专业。虽然我没有正式的工作经验,但在学校期间我参与了多个嵌入式系统项目,积累了实际开发经验。我希望能成为一名嵌入式软件工程师,并通过我的技术能力为公司的发展做出贡献。
在学校,我参加了C语言竞赛并获得了第一名,提升了我的编程技能。此外,我还举办了一场Python讲座,帮助自己巩固了基础语法,并提高了沟通能力。
除了课程学习,我自学了C语言、Python、LVGL操作系统和Linux编程等技术,并在两个项目中得到了实践应用:
汽车仪表盘项目:我参与了基于LVGL的汽车仪表盘设计,负责系统架构和功能模块实现,如油门控制和转向灯的显示。
基于LVGL的平板电脑项目:这个项目包含7个功能模块,涉及天气显示、音乐播放器、聊天机器人等。特别是在音乐播放器中,我利用多线程和互斥锁处理共享资源,确保了系统的流畅运行。
我还深入理解了API接口调用,使用MQTT协议进行服务器通信,并通过Linux命令获取CPU和内存使用情况,展现了系统资源占用。
我拥有计算机二级Python证书、计算机网络三级证书,并通过了英语四级考试。
我热衷于嵌入式开发,具 ...
