问题标签 [embedded]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
embedded - 如何在 C 中重置 PIC18?
使用 C 代码和 HiTech Pic18 C 编译器重置 PIC18 的最佳方法是什么?
编辑:
我正在使用
但必须有更好的方法
algorithm - DSP/FPGA相位累加器如何工作?
我正在查看相位累加器的代码,我一定是个傻瓜,因为我不明白。代码很简单:
accum 是一个 32 位的寄存器。显然,在某些时候它会翻转。
我的问题真的是:这与灵态有何关系?
user-interface - 文本模式 LCD 显示的用户界面
有人知道有关此主题的任何资源吗?
我正在为 2x16 LCD 显示器开发嵌入式应用程序。理想情况下,我希望有一个通用(独立于显示器)框架,几乎可以在任何显示器上使用 - 一个或多个段 LED、1x16、2x16 LCD 等。还想了解此类小型显示器的一般指南用户界面。
编辑:我对高级功能感兴趣,如何组织用户界面——菜单、选项和用户输入。我们不在这里讨论 LCD 控制器的问题。
embedded - 在 STM32 闪存中运行多个应用程序
我想在我的 STM32 闪存中有两个应用程序,一个基本上是引导,另一个是“主”应用程序。我已经想出了如何将它们中的每一个加载到闪存的不同区域,并且在进行内存转储之后,一切看起来都在正确的位置。
因此,当我进行重置时,它会加载引导,此时引导所做的只是跳转到应用程序。调试启动,这一切似乎工作正常。但是,在我跳转到应用程序之后问题就来了,它只执行一条指令(汇编),然后跳回引导。它应该无限期地留在应用程序中。
那么我的问题是,我应该在应用程序中“跳转”到哪里?
似乎有一些潜在的地方,例如中断向量、重置处理程序、应用程序的主要功能。实际上,我已经尝试了所有这些都没有成功。
希望这是有道理的,如果没有,我会更新问题。
感谢您的帮助!理查德
更新:
- 我在调试器中玩了一下,并手动将程序计数器更改为应用程序的主程序,这很有魅力,所以它让我觉得我的跳转有问题,为什么程序计数器没有继续运行跳跃后?
- 实际上它似乎是 PSR,“T”在跳转时被重置,如果我在跳转后再次设置它,它会按照我的意愿继续使用应用程序
- 好的找到了一个解决方案,似乎您需要在执行分支时将 PC LSB 设置为 1,否则它会进入“ARM”模式(32 位指令而不是像“拇指”模式中的 16 位指令。相当晦涩的小问题,谢谢分享给大家!
embedded - 您如何在嵌入式项目中组织代码?
高度嵌入(有限的代码和内存大小)项目对代码组织提出了独特的挑战。
我见过很多完全没有组织的项目。(主要是硬件工程师,根据我的经验,他们通常不关心代码的非功能方面。)
但是,我一直在尝试相应地组织我的代码:
- 硬件特定(驱动程序,初始化)
- 特定于应用程序(不太可能被重用)
- 可重复使用,独立于硬件
对于每个模块,我都尝试将目的保持在这三种类型中的一种。
由于嵌入式项目的规模有限和对性能的重视,它经常保持这种组织。
在某些情况下,我当前的项目是在具有 8k 闪存和 256 字节 RAM 的 MSP430 上的有限 DSP 应用程序。
embedded - 嵌入式代码中的事件处理
我想知道嵌入式系统代码中如何使用事件。
主要目的是了解事件标志在代码中的设置/重置方式。以及如何识别哪个任务正在使用哪个事件标志以及标志的哪些位被每个任务设置/重置。
请提出您的建议或意见。
提前致谢。
(编辑1:从下面的答案中的澄清复制)
很抱歉没有指定所需的详细信息。实际上,我对使用 vxworks/Itron/OSEK OS 分析任何用 C 语言编写的应用程序很感兴趣。例如 vxworks 中有 eventLib 库来支持事件处理。我想知道如何利用这样的系统例程来处理任务中的事件。什么是事件标志(是全局/本地......还是什么?),如何设置任何事件标志的位以及任务和事件标志之间可能的关系?
任务如何在 AND 和 OR 模式下等待多个事件?我遇到了一个示例,其中下面给出的场景看起来很危险,但是为什么呢?
我知道一个任务等待的多个事件标志或多个任务之间的循环依赖(死锁)是任务事件关系中的危险情况,但上述情况有多危险,我不明白......请解释一下。
我希望以上信息足够......
c++ - 寻找 16 位 x86 编译器
我正在开发一个嵌入式系统项目,并且遇到了编译器以编程方式嵌入 Paradigm C++ IDE 的问题。我希望能够自动化构建。
处理器是 AMD186ES。我没有使用操作系统 - 只是裸机的东西。我需要从 C++ 生成实模式 16 位 8086 机器代码。
我的谷歌搜索表明 G++ 可以构建这样的代码。
我的问题是:
可以配置 g++ 来构建此机器代码吗?
是否有其他 C++ 编译器也可以做到这一点?
c - 声明指向 __far 指针的指针的正确方法是什么?
在嵌入式目标上,我使用远指针来访问内存映射的某些部分。
near 指针(没有明确指定 __near):
指向近端指针的指针:
p>远指针:
声明指向远指针的指针的正确方法是什么?这个指针本身必须是远指针吗?
compiler-construction - 非机器字原语的倍数是个好主意吗?
假设您有一种动态语言(类似于常见的脚本语言)并想为它编写一个编译器。为类型标签之类的东西保留一些机器字是个好主意吗?特别是对于微控制器和类似设备,这是一个好主意吗?
我可以想到一些优点,例如减少类型信息的存储,更容易的内存管理(甚至可能是 gc)和更容易调试。但是这些是否可以证明普通算术运算或其他需要完整单词的运算的开销是合理的?请注意,字节码虚拟机在这方面会更糟,因为性能开销要大得多。所以不建议这样做;)
无论如何,有些人不会为微控制器级硬件编写数字密集型代码,但仍然......
embedded - 软件开发人员很难进行低级/嵌入式系统编程吗?
鉴于我作为通才的背景,我可以涵盖从模拟电子到编写与 RDBMS 后端接口的简单应用程序的大部分领域。
我目前在一家开发硬件以解决行业特定问题的公司工作。我们有一位经验丰富的程序员,他为 PC 编写了商业应用程序、视频游戏和一大堆其他东西。但是当我和他谈论做低级编程时,他同时表达了对加入该项目的兴趣和怀疑/不确定性。
即使在谈论 PC 时,他似乎在语言级别上操作比在较低级别的东西(指令集、ISR)上操作更舒服。尽管如此,他还是个聪明人,我认为一旦他克服了最初的学习障碍,他就会喜欢这份工作。但也许这就是我自己对低级东西说话的热情……如果他真的感兴趣,也许他已经开始朝那个方向学习了?
您是否有进行软件到硬件(或低级软件)转换的经验?或者,更好的是,让一个只做软件的人,把他转移到低级的东西上?
编辑:
PS 我很想从响应者那里听到他们自己的背景是什么——EE,CS,两者都是?