嵌入式技术
权威的嵌入式系统、嵌入式技术和嵌入式开发频道,涉及嵌入式设计应用、单片机与SoC、编程语言及工具、嵌入式系统软硬件调试及优化、嵌入式操作系统等资讯和嵌入式技术方案,包括嵌入式接口/总线/驱动、嵌入式软件/开发板、实时应用开发、嵌入式联网技术、ARM等领域,是嵌入式工程师最好的学习平台。什么叫多任务系统 FreeRTOS任务管理
回想一下我们以前在使用 51、AVR、STM32 单片机裸机(未使用系统)的时候一般都是在main 函数里面用while(1)做一个大循环来完成所有的处理,即应用程序是一个无限的循环,循环中调用相应的...
2023-09-28 78
qemu-riscv在scode的gdb调试步骤
qemu支持gdb调试,只需要在命令中添加 -s -S两个参数即可,在bsp/qemu-riscv下已经有了qemu-dbg.sh,且加入了该参数...
2023-09-28 252
RyanMqtt使用介绍和示例代码(1)
此步骤不做过多解释,是lwip就用lwip,是at设备就用at_socket。推荐所有平台都使用SAL框架(RyanMqtt软件包会自动使能)。...
2023-09-28 478
RR轮询调度?Verilog是如何实现RR轮询调度的?
在设计中,我们经常会用到RR(Round-Robin,RR)轮询调度,用于保证在一个时间段内的多个请求信号都能得到公平响应。...
2023-09-28 681
如何选择STM32MP1系列核心板和开发板
一款合适的处理器,是每个工程师在开发设计前期调研必须面对的难题。而如何挑选一款符合产品开发的处理器呢?今天我们就以ST公司的STM32MP1系列处理器进行分析比较。ST公司目前已经发布了...
2023-09-28 138
【蓝桥杯嵌入式】第五章 LCD
第一节硬件解读蓝桥杯嵌入式的LCD并没有提供原理图,所以也没有什么可以讲解的,如果有需要,请联系我们微信公众号管理员,谢谢。微信搜索:撞上电子微信公众号即可。第二节CubeMX配置本...
2023-09-28 75
STM32 TIMER+DMA输出PWM异常案例的问题解析
有人使用STM32U575的TIMER加上DMA做PWM输出。具体就是利用某TIMER的一个通道的比较事件触发DMA,通过DMA修改CCR值来实现指定占空比的PWM输出。...
2023-09-28 882
基于Vitis AI的ADAS目标识别
Vitis™ AI开发环境可在赛灵思硬件平台上加速 AI 推断,包括边缘器件和 Alveo™ 加速器卡。此环境由经过最优化的 IP 核、工具、库、模型和设计示例组成。其设计以高效和易用为核心,旨在通过...
2023-09-28 1042
Linux为什么中断不允许休眠
Linux 为什么中断不允许休眠? 所谓的睡眠,就是调用 schedule 让出 CPU,调度器选择另外个进程继续执行,这个过程涉及进程栈空间的切换。 1、假如中断上下文中调用 schedule ,此时获取的 stru...
2023-09-27 274
Linux中断子系统相关节点
Linux 中断相关节点 /proc/interrupts cat 这个节点,会打印系统中所有的中断信息,如果是多核CPU,每个核都会打印出来。 包括每个中断的名字、中断号 IRQ number、每个中断的触发次数、在哪个CPU核...
2023-09-27 255
Linux中pinctrl操作GPIO只需要几步
pinctrl 子系统 API pinctrl 子系统的 API 有很多,对于驱动工程师来说,pinctrl 操作一个 GPIO 只需要三步: 1、devm_pinctrl_get2、pinctrl_lookup_state3、pinctrl_select_state 在 Linux 中,加 devm_ 开头的函数,代表...
2023-09-27 281
gpio子系统API详解
gpio 子系统 API gpio 子系统中操作一个 GPIO 需要如下几步: 1、of_find_compatible_node2、of_get_named_gpio3、gpio_request4、控制gpio(gpio_direction_input、gpio_direction_output……)5、gpio_free 1)of_find_compatible_node...
2023-09-27 229
Banana Pi BPI-R3 Mini 介绍:一款小巧而强大的嵌入式路由器板
Banana Pi BPI-R3 Mini 最引人注目的特点之一是其紧凑的设计。该路由器足够小,可以放在手中,但功能却足够强大。在考虑计算能力时,这使得该板成为那些希望在小型办公室或家庭环境中创建高...
2023-09-27 523
Linux可用的事件选择器编码
事件选择器编码表 20 描述了可用的事件选择器编码。根据 mhpmeventX[7:0]中编码的事件类字段,将事件分类为类。可以通过为给定事件类别设置相应的事件掩码位来对一个或多个事件进行编程。...
2023-09-27 167
事件选择器寄存器是什么
事件选择器寄存器为了控制要计数的事件类型,事件选择器 CSR mhpmevent3 和 mhpmevent4 用于对相应的事件计数器进行编程。这些事件选择器 CSR 是 64 位 WARL 寄存器。 事件选择器分为三个字段;低...
2023-09-27 140
SiFive U64的HPM是什么
对于性能分析,通常我们会使用Perf工具。而perf中的硬件事件,则需要硬件的支持——性能监视单元PMU。RISC-V u64内核支持PMU,使得我们可以通过perf来统计程序运行所产生的cycle、cache hit、cache...
2023-09-27 129
内核调试工具printkprintk的输出格式
很多内核开发者喜欢的调试工具是printk,在Linux内核中,使用printk()函数来打印信息,它与C库的printf()函数类似。 printk()与printf()的一个重要区别是: printk()提供输出等级 。内核会根据这个等级...
2023-09-27 120
Linux内核pr_xx()函数封装
pr_xx( )封装 在使用printk的时候需要手动添加输出等级KERN_INFO、KERN_WARNING等,这样还是有些麻烦。因此,Linux内核也对printk进行了进一步的封装。 Linux内核将每一个输出等级封装为pr_xx()函数,例如...
2023-09-27 87
Linux内核中如何修改printk等级
printk等级 路径: include/linux/kern_levels.h # define KERN_EMERG KERN_SOH "0" /* 最高输出等级,系统可能处于不可用的状态 */ # define KERN_ALERT KERN_SOH "1" /* 紧急和理科需要处理的输出 */ # define KERN_CRIT KERN_SOH...
2023-09-27 85
Linux内核基础:动态输出使用
动态输出使用 打开svcsock.c文件中所有的动态输出语句 # echo 'file svcsock.c +p' > /sys/ kernel /debug/ dynamic_debug/control 打开usbcore模块中所有的动态输出语句 # echo 'module usbcore +p' > /sys/ kernel /debug/ dynamic_...
2023-09-27 87
Linux内核动态输出调试
动态输出可以动态选择打开某个内核子系统的输出,可以有选择性地打开某些模块的输出。 配置内核编译选项要使用动态输出,必须在配置内核时打开CONFIG_DYNAMIC_DEBUG宏。内核代码里使用大量...
2023-09-27 91
Linux内核实际项目中的死锁
实际项目中的死锁 下面的例子要复杂一些,这是从实际项目中抽取出来的死锁,更具有代表性。 # include # include # include # include # include # include static DEFINE_MUTEX (mutex_a) ; static struct delayed_work dela...
2023-09-27 75
Linux内核中简单的AB-BA死锁案例
简单的AB-BA死锁案例 下面举一个简单的AB-BA死锁的例子: # include # include # include static DEFINE_SPINLOCK (hack_spinA) ; static DEFINE_SPINLOCK (hack_spinB) ; void hack_spinAB ( void ) { printk ( "hack_lockdep:A- >Bn" ); spin_loc...
2023-09-27 78
Linux内核死锁lockdep功能
死锁是指两个或多个进程因争夺资源而造成的互相等待的现象,如进程A需要资源X,进程B需要资源Y,而双方都掌握对方所需要的资源,且都不释放,这会导致死锁。 在内核开发中,时常要考虑...
2023-09-27 82
armv7 generic timer使用笔记
armv7-A架构中每个CPU核心都包含自己的私有定时器,所有cpu的定时器共享一个System counter, System counter负责产生计数,传递到每个核心的私有定时器...
2023-09-27 505
编辑推荐厂商产品技术软件/工具OS/语言教程专题
电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |