问题标签 [firmware]

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.

0 投票
2 回答
2220 浏览

firmware - 固件如何与电子设备通信以执行其操作?

几乎所有的电子设备都带有固件。我知道它存储在 ROM(只读存储器)中,因此它变得非易失性(不需要电源来保持内容不会像 RAM 那样被擦除)

我想知道的是“固件如何与电子设备通信以执行其操作?” 假设有一个小滚轮..按下按钮,它是如何移动的?有人可以解释一下背后的原因,以实现它..我认为可能需要一些简短的解释来解开它..

另外,用于编码固件的最流行的语言是什么?

0 投票
5 回答
211 浏览

embedded - 使用 PC 上的示波器进行精确计时

在嵌入式软件(固件)领域,观察事件顺序、计时并优化程序是相当普遍的,方法是让程序摆动 PIO 线并在示波器上捕获它们的行为。

在过去的日子里,可以切换串行和并行端口上的引脚以在基于 PC 的软件上实现几乎相同的功能。这使得在同一跟踪上捕获基于主机 PC 的软件事件和固件事件并检查主机软件/固件交互成为可能。

现在,我的新笔记本电脑……没有串行或并行端口!这种情况越来越多。那么,是否有人对从“现代”PC 发出准确的定时信号有任何建议?令我震惊的是,我们没有任何立即可编程的、无滞后的输出引脚。

该解决方案需要在笔记本电脑上运行,因此不允许使用仅插入台式机的附加卡。

0 投票
4 回答
4776 浏览

linux-device-driver - 查找设备基地址以通过 inb() 和 outb() 进行通信

我正在尝试使用 inb()、inw()、outb() 和 outw() 命令与磁盘驱动器通信,以便找到有关驱动器的特定信息。但是,要使用这些命令,我​​需要设备的正确 I/O 端口。当我拥有正确的 I/O 端口时,我可以很容易地找到我正在寻找的信息,但是,我不知道如何在 Linux 中找到设备 I/O 端口的基地址。

在 DOS 中,我可以使用 Hdat2 查找设备的基地址,但是,我试图在 Linux 中查找地址。有没有办法在 Linux 中找到哪个设备映射到哪个 I/O 端口?

/proc 中有一个名为 ioports 的文件,其中包含一些信息,但我不知道如何将这些信息与特定设备相关联。

任何帮助将不胜感激。谢谢!

0 投票
2 回答
1630 浏览

mobile - 是否可以随意更改手机固件?

我想买一部手机来玩一下固件编程。这对我来说是一个全新的领域。

是否可以将原始手机的固件更改为自定义固件?关于如何做到这一点的任何指示?

另外,您会推荐哪种手机型号?

我(目前)对保持通话功能并不完全感兴趣,只是将手机用作便携式计算设备(尽管它可能很不起眼)。我想 Android 和 OpenMoko 是要走的路,但我想知道替代方案。

0 投票
7 回答
1399 浏览

firmware - 永久性 DOS 攻击 - 任何知识渊博的人?

所以,我正在研究一个类的永久 DOS 攻击,我很难想出具体的例子。有很多关于 Phlashing 的信息(对于那些不知道该术语的人来说,刷写固件以使设备变砖或将恶意固件放置在其位置),但我希望有更广泛的示例。

话虽如此,必须有一种方法可以编写代码来执行诸如磨损磁盘臂之类的事情,对吗?将磁盘搜索到磁盘末尾的东西,然后回到前面,不断地。任何人都有一个如何实现的例子?是否有某种方法可以指定在 C 中的磁盘上跟踪的位置(类似于遍历文件中的某个点,但针对整个 HDD!)?如果不是,我想总是试图强制文件在磁盘上的位置......这似乎不太有趣。同样,你能以编程方式做类似的事情吗?

如果有人对这些类型的攻击有任何见解,或者有什么好的资源可供我查看,我将不胜感激。也许你几年前在 Slashdot 上读过一个关于它的故事?让我知道!我能收集到的信息越多,我就越不可能被迫在课堂上用我的路由器打发时间 :) 我不是靠金钱路由器做的!

0 投票
2 回答
11684 浏览

android-ndk - 我怎么知道我正在运行的 android ndk 版本

在 gui 中,您可以转到 Settings->About Phone->Firmware Version 并获取 2.1(或其他)。如何从命令行(或需要在运行时执行此操作的本机应用程序)执行此操作?

0 投票
1 回答
432 浏览

android - Android:不同型号的原始固件标识字符串

是否有针对不同 Android 手机型号的Build.MODEL字符串的摘要?就像是:

  • “英雄”——HTC 英雄
  • “ERA G2 Touch” - HTC Hero品牌
  • “T-Mobile myTouch 3G”——HTC Magic 品牌
  • “GT-I5700” - 三星盖乐世
  • ... 等等

我很好奇我的应用程序用户中 root 设备的百分比是多少,但有时很难分辨哪个设备是哪个(是的,我知道 root 固件可以模仿 vanilla 一个,但通常不会)。

0 投票
4 回答
5175 浏览

embedded - 是否有可用的 FreeRTOS 解释语言库?

我在一家使用 FreeRTOS 为多个设备创建固件的公司工作。最近我们对新功能的要求已经超过了我们的固件工程师的工作量,但我们现在也雇不起任何新人。即使是微小的更改,也需要固件人员在非常低的级别上进行修改。

我一直在为 FreeRTOS 寻找某种解释语言项目,它可以让我们在更高级别实现新功能。理想情况下,我希望最终得到一些东西,这样设备就更​​接近于我们编写驱动程序的通用计算机,而不是我们必须自己实现每个功能。

是否有任何解释 java、python 或类似字节码的 FreeRTOS 项目?

我在谷歌上看过,但由于我自己不是固件工程师,我不确定我是否正在寻找正确的关键字。

感谢大家

0 投票
6 回答
318 浏览

c - 这听起来像堆栈溢出吗?

我想我的嵌入式固件代码中可能存在堆栈溢出问题或类似问题。我是一名新程序员,从未处理过 SO,所以我不确定这是否正在发生。

固件控制一个设备,该设备的轮子周围均匀分布着磁铁,电路板上有一个霍尔效应传感器,可以感应磁铁何时在上面。我的固件在监控磁传感器的同时操作步进器并计算步数,以检测车轮是否失速。

我在我的芯片上使用定时器中断(8 位,8057 acrh。)来设置输出端口来控制电机和失速检测。失速检测代码如下所示...

每次触发 ISR 时都会调用此代码。PosSensor 是磁传感器。MagnetSize 是通过磁场所需的步进数。GapSize 是两个磁铁之间的步数。所以我想检测车轮是否被传感器卡在磁铁上或没有卡在磁铁上。

这在很长一段时间内都很好用,但过了一会儿,第一个失速事件会发生,因为“StallDetector > (MagnetSize + 10)”但是当我查看 StallDetector 的值时,它总是在 220 左右!这没有意义,因为 MagnetSize 总是在 35 左右。所以停止事件应该在 46 时触发,但不知何故它一直到 220?而且我没有在我的代码中的其他任何地方设置失速检测器的值。

你对我如何追查这个问题的根源有什么建议吗?

ISR 看起来像这样

HandleStallEvent只是将一些变量设置回它们的默认值,以便它可以尝试另一个动作......

0 投票
4 回答
12370 浏览

firmware - Lego Mindstorms 1.0 和 2.0 有什么区别

我正在考虑购买一个思维风暴套件(我目前没有,但我在大学使用过 1.0),我有点不确定 2.0 相对于 1.0 的好处。我已经看到有关该主题的其他帖子都说通常 2.0 更好,但我对此有一些更具体的问题,我似乎无法找到任何答案。

除了您使用 2.0 套件获得的不同乐高积木和传感器之外,1.0 nxt 积木和 2.0 nxt 积木之间有什么区别吗?从我可以从其他来源确定的情况来看,除了安装的固件外,它们是相同的。我说我可以购买 1.0 套件并安装与 2.0 套件附带的相同固件,并且砖块将是相同的还是 1.0 砖块与 2.0 固件不兼容?

另外,我计划使用不同的编程语言,如 c 或 java,所以我需要为此安装特定的固件,如 librcx 或 lejos 对吗?因此,如果使用 c 或 java 而不是提供的乐高编码方法,我使用 1.0 还是 2.0(套件中的乐高部件除外)并不重要,对吗?

简而言之,假设我使用的是 librcx 或 lejos,并且我不关心传感器和乐高部件,那么购买 2.0 套件比 1.0 套件有什么好处吗?

提前致谢