embedded相关内容
背景 这是我的一些背景,以便您的人可以知道我拥有或不拥有的相关知识.我完全是这种嵌入式系统的新手.而且我对电子学一无所知,我是一个纯粹的软件人. 我唯一的嵌入式系统经验是树莓派,和STM32F4 Discovery有很大的不同. 我可以通过在 Raspberry Pi 上使用标准 Linux C 库来实现 UART 读/写编程,该库通过带有电压转换器 IC 的 USB-to-RS
..
我正在尝试在 FPGA 板上读写数据.该板本身带有一个驱动程序,该驱动程序在插入该板时创建一个名为 ttyUSB0 的终端设备.在 FPGA 上,实现了异步接收器和发送器,它们似乎可以工作. 但是,C 方面似乎存在问题.我一直在使用一些测试向量来测试 FPGA 是否输出了正确的信息.我注意到了一些事情: 设备有时无法正确打开 有时无法检索或设置终端属性. 读取有时是非阻塞的,不会检
..
我正在尝试使用 Linux 下的 termios 框架通过 UART(usbserial)连接非接触式智能卡读卡器.该代码在 PC 上运行良好,但是当我在 ARM9 目标上进行交叉编译并试用时,它能够打开设备甚至将命令写入设备,但读取命令会无限期地阻塞.这是代码片段: int mifare_rdr_init(struct mifare_1K * ptr, char *rdr_devnode){b
..
在为各种项目编写了几种不同的自定义串行协议之后,我开始对每次都重新发明轮子感到沮丧.代替继续为每个项目开发定制解决方案,我一直在寻找更通用的解决方案.我想知道是否有人知道满足以下要求的串行协议(或更好的实现): 支持多种设备.我们希望能够支持 RS485 总线. 保证送达.某种确认机制,以及一些简单的错误检测(CRC16 可能没问题). 不是主/从.理想情况下,从站将能够异步发送数据.这
..
有人可以推荐一个用于 Microchip PIC18 处理器的 Modbus RTU 从设备的开源实现吗?我正在寻找用于 RS-232/RS-485 的 Modbus RTU 实现,但也欢迎 Modbus TCP/IP 实现. 解决方案 我已经为 PIC18 实现了一个 Modbus RTU(和 ASCII)从机,但使用 USB 而不是 RS232/485.转换为 RS232/485 非常
..
我正在开发一种通过(虚拟)串行端口与 PC 通信的设备.问题是我们发送的数据偶尔会被 Windows 错误地识别为总线鼠标,然后加载“Microsoft Serial Ballpoint"驱动程序,鼠标指针开始在屏幕上跳来跳去,随机点击. 通过谷歌搜索发现这是串行设备的一个古老而众所周知的问题,通常的解决方法是通过一些注册表黑客来禁用有问题的驱动程序.然而,我们的用户有很多要求,我宁愿不要让
..
我有一个嵌入式系统,我通过串行方式与之通信.现在的命令结构设计为交互式操作:它显示提示,接受一些命令,并以人类可读的形式显示结果. 我正在考虑将其更改为更适合机器使用的格式,这样我就可以通过 MATLAB GUI 与它对话,而不会遇到太多麻烦(现在它在交互式提示和不同的消息长度等方面出现问题). 那么是否有文档或标准描述了如何为您的嵌入式系统设计一个好的串行命令协议? 解决方案
..
我有一个关于 ARM BLX 指令的问题,特别是关于 BLX RX 指令的问题.在 ARM 手册上,它指出对于 BLX 标签,标签应在 32MB 范围内.在我的代码中,我将 R0 寄存器设置为指向地址 1.我当前的地址和address1(目的地址)之间的距离大约是0x05000000. 当我到达指令时,它崩溃了(address1 中的代码是 ARM,所以 T 模式没有问题).在 BLX 中使
..
我有一个奇怪的.我正在使用供应商的头文件开发嵌入式系统.我正在使用 GCC 4.6.3 编译文件.我想在我的代码中使用 C++,我有错误我无法弄清楚.我正在运行一个供应商示例程序,我所做的只是将 main.c 文件的名称更改为 main.cpp.因此,我假设 C++ 编译器正在解释头文件.其中之一包含以下几行: __attribute__((naked)) 静态 return_type 签名 \
..
我正在使用 STM32F103C8T6 并想使用 CMSIS,本质上只是寄存器定义,没有代码,让我的生活更轻松,同时仍然保持在低水平.问题是我不知道如何安装库以在 Makefile 的命令行上使用.所有文档似乎都与特定于供应商的 IDE 绑定,例如 STM32CubeIDE. 我想首先要做的是下载 CMSIS 库,我在 GitHub 上找到了该库.但是,在解压 ARM.CMSIS.5.6.0
..
我在 ARM 微控制器上使用 time().处理器一达到此功能就会重新启动. 奇怪的是,当我处于调试模式时,代码运行良好,但一旦我想在独立模式下应用它,我就会遇到重置. 我是否忽略了什么?这个功能有替代品吗? 部分代码是这样的 #include #include 无效主要(无效){静态时间_t rawtime = 0;原始时间 = 时间
..
我的板上的 JTAG 连接器上有一个 Keil ULINK2 USB 仿真器盒,它与板载 Cortex-M3 CPU(TI/Stellaris/LuminaryMicro LM3S 系列)配合良好.似乎 JTAG 和 SWJ-DP 端口在这些 CPU 上共享相同的引脚(以及板上的连接器).一个似乎没有 ITM (printf) 功能,另一个则有. 以前的固件人一直使用 stdio 转 UAR
..
我正在尝试从源代码交叉编译 Qt 4.7.1,以下是关于我的设置的一些注意事项: 我的预期输出是运行 Qt 应用程序所需的共享对象库. 我的目标平台是采用 ARM Cortex-A8 架构的 TI AM335x 处理器. 我的开发平台是 x86 64 位 Ubuntu 虚拟机 我对这应该如何工作的理解是我为我的目标平台下载了工具链(这是 Linaro 工具链来自 TI),我下载了
..
我正在计算 3 轴加速度计的角度,但我的编译器没有 atan 或 atan2 函数.它有一个保留的内存插槽,但它调用了一个我在任何文件中都找不到的函数. 我的编译器是运行 ARMCC 编译器的 Keil µVision 4.编译有文件 math.h,但函数是 extern 并且不存在: extern _ARMABI double atan2(double/*y*/, double/*x*
..
我有一个使用 STM32F103 (ARM Cortex M3) 的嵌入式项目,它在发布模式下偶尔会出现硬故障.作为恢复的一部分,我想从硬故障之前检索 PC 值并将其存储在电池支持区域中以供以后调试. 如何确定发生硬故障时程序计数器的值?显然,PC 现在已设置为其在硬故障中断内的位置. 我应该去哪里看?有正常模式寄存器组的地址吗? 谢谢! 解决方案 Cortex-M3 使
..
我有一个具有时间关键 ISR 的嵌入式应用程序,它需要遍历一个大小为 256 的数组(最好是 1024,但 256 是最小值)并检查一个值是否与数组内容匹配.在这种情况下,bool 将设置为 true. 微控制器是 NXP LPC4357,ARM Cortex M4 内核,编译器是 GCC.我已经组合了优化级别 2(3 更慢)并将函数放在 RAM 中而不是闪存中.我还使用指针算术和 for
..
我将设置构建环境来为 AT91SAM9X25 Board 制作我自己的 linux 嵌入式系统.我正在使用 buildroot 来执行此操作.make 命令构建所有目标,首先构建工具链,然后打包,然后是 rootfs 和 rootfs 的映像(tar、cpio ...).要重建 rootfs,我通常使用 make clean 然后 make.make clean 命令删除所有工具链,包括工具链.
..
我必须在 ARM 架构上测试一些低级代码.通常在实际电路板上进行实验非常复杂,所以我在考虑 QEMU. 我想获得一些调试信息,例如 printfs 或 gdb.我知道这对 linux 很简单,因为它实现了 QEMU Integrator 的设备驱动程序和 gdb 功能,但我没有使用 Linux.另外我怀疑从 Linux 内核源代码中提取这种功能会很复杂. 我正在从一些已经实现其中一项功
..
下面这行代码在arm组装中做了什么: 000031e6 2916 cmp r1, #22000031e8 bf1a itte ne 我得到了第一行(比较 r1 和 22)但是第二行呢(我以前从未见过 itte 命令,谷歌搜索什么也没返回) 解决方案 是ARM的IF-THEN-ELSE指令,在Thumb-2指令集中引入.(根据您上面的具体示例,如果您在 ITTE 指令之后显示了接下来
..
我试图让这个 tutorial 按预期工作成功(在 bl main 指令之后失败).根据教程命令 (qemu) xp/1dw 0xa0000018 应该导致打印 33(但我得到 0x00 代替) a0000018: 33 这是主调用后寄存器的内容(见startup.s) (qemu) 信息寄存器R00=a000001c R01=a000001c R02=00000006 R03=0000
..