手机作为微控制器


19

我周围有几部手机,其中一个是这个手机:http : //www.gsmarena.com/sony_ericsson_elm-3057.php


可以清除闪存并用引导程序替换,然后上传arduino草图或pic32草图(C#/ C ++)。

我有这个主意,因为它是用于开发硬件项目的非常便宜的平台。(与单独购买每个部件相比,您可以获得屏幕,按钮,音频I / O,互联网等,并且以非常便宜的价格获得所有产品。)

是否可以擦除闪存并将引导加载程序安装到电话中以用作嵌入式计算机?


3
为什么要投反对票,这是一个很好的问题。
Rocketmagnet 2012年

它确实需要清理。(我没有投票,但是iIMade正在进行的编辑确实可以清除所提出的问题)
Cyber​​Men 2012年

您可能对Rockbox项目感兴趣,该项目一直在与mp3播放器做类似的事情。参与其中的人员可能会告诉您,获取有关专有硬件的信息有多么困难。
Jeanne Pindar 2012年

@Cyber​​Men我不确定“用什么格式格式化手机中的闪存并进行安装”是什么意思
varesa 2012年

@varesa不要问我,问问OP。使用您的演绎英语技能。
Cyber​​Men 2012年

Answers:


1

成本从来都不是问题。许多发烧友将愿意为容易破解的高端设备支付适中的价格。问题在于ARM是一个封闭的平台。通常在SoC(片上系统)的硅片上有一个称为专用ROM的部分。它阻止了重用。

ROM的这部分负责按某种顺序选择引导加载程序:串行Z-Modem,外部Nand,串行ROM,SDCard,外部USB。对于每个设备,订单都是单独的且记录不充分,通常在电源以分支到备用加载器时应按住几个按钮。如果大多数时候检查平台所有者的数字签名,则为引导加载程序的映像。所以没有运气。

对于一个项目,可以选择随机设备。但是您可能会对知名设备更加感兴趣,包括已发布的原理图和适用于Linux,Android等的源代码。

因此,我的建议是看一下活跃用户社区包围的设备:Raspberry Pi,BeagleBone,BeagleBoard,某些三星评估平台(PandaBoard?)

我在TI AM35XX上的个人经历以对一切复杂性的失望而告终。世界上最小的名为Angstrom的Linux具有3GB分发映像。芯片的文档为4000-5000页。它感觉不像是一种爱好,也不愉快。

在Intel Atom SoC变得流行之后,情况可能会改变。我希望引起广大用户的关注,并将在屏幕尽可能小的Atom方向上跟随人群。希望有人能完成一张面板安装的,具有信用卡和GPIO大小的部件。应该会很好玩。


2
实际上,TI AM35XX 非常棒 -该平台上最小的Linux操作系统适合3MB以下。我个人将这些(和AM33XX)用于一堆事情,一旦遇到了交叉编译的麻烦,便拥有了一个受良好支持的,有据可查的硬件。是的,它很复杂,TRM(5000页)是一块巨大的砖块,但是它只是作为参考文件,而不是催眠曲(您也可以那样)
qdot 2012年

+1。是的,我同意TI ARM可能是最好的选择。我的意思只是作为业余爱好者的个人经历。如果我的日常工作是与团队一起与ARM进行角力,那会更加有趣。

好吧,我通常会选择一台功率过大的机器,而不是一台功率不足的机器。显然它不是Arduino,但它是Linux,一旦您在其上启动了内核启动,便与那里的任何其他crossdev平台没有什么不同。建立一些用户区(或建立自己的init并从那里运行),您就可以回家了:)
qdot 2012年

5

早在一个世纪前,就有一个项目要做类似的事情(对一个便宜且非常受欢迎的电话系列进行反向工程)。

http://nokix.pasjagsm.pl/help/blacksphere/sub_050main.htm

是的,Android选项可能是最简单的..或Windows Mobile,它也相当开放。


等一下,WP的低级内容也打开了吗?
varesa 2012年

WP还是WM?我对Windows Phone(即版本7及更高版本)的经验有限,但我认为它仍可以运行本机C二进制文件。版本6构成了许多旧的但功能强大的PDA电话的大部分,它是非常开放的-它运行本机C代码,可以用MSVC和GCC进行编译,几乎没有安全性。引导加载程序作为常规应用程序,它会跳转到linux内核:)
qdot 2012年

很久以前,我就使用HTC Touch Pro尝试过这一功能,我可以保证,您可以进入Linux内核(或自定义的Android版本)。这并不是说与所有硬件对话同样容易或可行。(可悲的是,因为我满怀热情地讨厌WM6,但我无法保持与其他任何操作系统相同的功能)
Alexios 2012年

qdot,为什么不告诉我们更多有关从商店购买Windows Phone 6/7到运行我自己的代码控制(例如通过串行端口5个伺服器)的方法的更多信息。
哈里·斯文森

1
@qdot是否可以带来一些此信息,以便链接仅是参考,现在它很容易受到链接腐烂的影响。
Kortuk 2012年

3

我对此没有经验,但是我认为这并不容易(即使可能的话)。我认为您可能会忘记使用C ++或C#而不是ASM + C对其进行编程。它与arduino草图或PIC32代码或任何不是特定于CPU的东西不兼容。许多新手机具有类似ARM内核的功能。

我真的不知道如何对设备进行编程,但是我认为这是可能的,因为如果您将固件发送给他们进行维修,他们通常可以更新固件。

此外,您还必须为所有硬件(显示器,WLAN,传感器等)编写自己的驱动程序,如果没有有关硬件的更多信息,这将非常困难,电话制造商可能不会向您发布这些信息。 。

我认为最简单的方法是使用旧的android手机,因为您可以免费获得带有驱动程序和所有低级内容的源代码。您可以撕开或使用用户可见的UI和其他组件。但这可能不是您想要的,除非您周围有一些旧的Android手机。

另外,如果手机被“黑客攻击”以运行任何其他操作系统,尤其是像android之类的开源操作系统,则您可能能够获取要使用的端口的源代码。


不可能从闪存中读取所有内容并从那里读取/修改闪存吗?
哈里·斯文森

@HarrySvensson那么你要么必须直接修改内存,或者使用某种编程口/头的这可能是有升级固件。可能,但不容易。
varesa 2012年

2
为什么要随机投票?
varesa 2012年

@HarrySvensson,假设您拥有转储所有闪存的工具(可能有几个闪存芯片意在包含不同的内容,例如安全的引导加载程序,而有些则可能不需要专有工具),那么您是否愿意对所有内容进行解码用手吗?不要指望所有文件都采用很好的文件系统格式,您可以像拇指驱动器一样将其安装在计算机上。您可能会看到很多专有且无法识别的东西,或者只是海峡原始汇编代码,其中可能有一些程序代码。
乔恩·L

2

自己最多只能做到这一点。Rockbox项目支持的设备之一将使您的工作更加轻松,该设备是mp3播放器的开源固件。其中一些设备价格便宜,并具有您提到的许多优点,它们旨在通过USB升级固件。您将得到一个活跃社区的帮助,他们已经弄清楚了有关编译器,引导加载程序等的基本问题,以及一些开始的源代码。

Rockbox的一个不错的功能是将设备设置为双启动,因此当您不使用新固件时,它们仍可用于其原始用途。


0

没有。

该手机的公共文档(例如在您链接到的页面上)甚至没有列出处理器类型。即使这样做,您仍然需要原理图(包括所有IC的部件号)才能为其编写代码。这将是Sony / Ericsson专有的,因此您将无法获得它)。其他任何手机都一样。

在极少数情况下,您会获得处理器,闪存等的所有文档,可能需要花费数周的时间才能编写与Arduino兼容的Bootloader。当然,这将需要您获得手机的开发环境,这可能会花费数百甚至数千美元。

即使你能写的Arduino兼容的引导程序,这将是不可能重复不可能上传并因为:1)编译器的Arduino是去为一个Arduino兼容微控制器(的Atmega,PIC32等)进行发射的代码运行的Arduino草图,而且手机绝对不会使用其中的大部分-很有可能是ARM的某种变体);2)I / O端口不会与Arduino放在手机上的相同位置(端口)。

请注意,有一些开放源代码的手机,但是您将无法在与我上面引用的相同的那些软件上运行Arduino软件(处理器和硬件不兼容)。其他一些答案建议使用Android,但请注意,由于专有驱动程序,它不在开源电话列表中。再一次的问题是,您可以在这些代码上运行Arduino代码吗,答案是肯定的。

因此,它的方式便宜,只是硬着头皮,并得到一个Arduino板和外设。


0

如何将各种“日常”硬件转变为微控制器平台?Sprite的mod是灵感的绝佳来源。它很好地说明了“打开”设备并获得对它们的控制所需的过程。TL; DR:您可以在SD卡和硬盘驱动器上运行Linux。不,不使用硬盘驱动器。硬盘驱动器上-在功能强大的CPU(即驱动器的控制器)上。


Linksys的WRT54G路由器是一个流行的设备破解,因为它使用开源软件,所以Linksys公司有义务发布源代码。你结束了运行Linux的可定制的平台,与以太网端口和Wi-Fi内置的。
tcrosley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.