搜索
bottom↓
回复: 241

[交流][开源]豆瓣FM播放器嵌入式极限挑战(2015-2-04更新)

  [复制链接]

出0入296汤圆

发表于 2015-1-4 23:34:52 | 显示全部楼层 |阅读模式
本帖最后由 Gorgon_Meducer 于 2015-2-4 17:31 编辑


傻孩子图书工作室作品


STAFF

   
    Hardware Design           Bean
    Driver Design                y574924080  qufuta

    Architecture Design       Gorgon_Meducer


ACKNOWLEDGE
   
    Armok



说在前面的话

    这是一个极限挑战的项目。

    2年前,我发起了傻孩子图书工作室这个开源组织,并邀更多的人加入开源计划,从那时起,陆陆续续
对技术抱有浓厚兴趣的坛友开始加入。经过松散而漫长的培训,现在终于开始进行第一个自发的开源项目
挑战(所谓自发是指并非由阿莫提议的项目)。

    我们决定从豆瓣FM播放器开始。首先这是一个WiFi播放器,计划首先从资源相对丰富的ARM Cortex M3
芯片入手,首先完成豆瓣FM播放器的原型机。接下来,我们会不断挑战自我,逐步降低处理器级别,挑战
M0,16位机甚至是8位机;逐步降低对系统资源的消耗,降低SRAM用量使其适应小资源MCU的环境;逐步
降低成本,加深我们对嵌入式系统的理解。这会是一个漫长的过程,但千里之行始于足下,我们本来就是
一群视技术为乐趣的人。

    第一个版本的原型机会采用Cortex M3级别的芯片,使用SD卡作为音乐的缓冲区,通过WiFi模块配合
lwIP网络协议栈连接豆瓣服务器,将数据首先下载到SD卡中缓存起来;系统采用一块Vx10xx MP3解码
芯片实现音乐的解码和播放。播放模块始终从SD卡中读取缓存的音乐,从而避免由于网络不稳定带来的
糟糕的播放体验。为了保护该开源项目,SD卡将不使用任何标准的文件系统,我们会将其视作一个巨大
的FLASH缓冲区使用,配合一个简单的链表式存储结构来保存和索引音乐文件。为了解决TCP下载音乐
到SD卡以及从SD进行音乐播放时产生的读写冲突,我们引入了两个SPI Flash作为中间的乒乓双缓冲介质。

    第二个版本将考虑采用Cortex M0级别的芯片,并尝试将SRAM用量控制到10K以内。



- 2015-2-04
    a. 更新硬件原理图,更新成品图片
        

- 2015-2-03
    a. 完成了第一版硬件的制作,开始调试
   
   

- 2015-1-26
    a. 补充了xmodem的接口依赖

  1. /*----------------------------------------------------------------------------*
  2. *              DEPENDENT INTERFACE                                           *
  3. *----------------------------------------------------------------------------*/

  4. /*! \brief xmodem lower layer byte write
  5. *! \param chByte xmodem usart write byte
  6. *! \return none
  7. */
  8. extern bool xmodem_lower_layer_write(uint8_t chByte);

  9. /*! \brief xmodem lower layer byte read
  10. *! \param pchByte xmodem usart write byte
  11. *! \return none
  12. */
  13. extern bool xmodem_lower_layer_read(uint8_t *pchByte);

  14. /*! \brief update next buffer or control transfer speed
  15. *! \param none
  16. *! \return buffer address
  17. */
  18. extern uint8_t * xmodem_call_back_receive(void);
复制代码

- 2015-1-25
    a. 更新xmodem驱动
        i. 修改xmodem接口,通过xmodem_init的参数来选择xmodem的工作模式(256字节模式和1K字节
          模式)

  1. ...
  2. /*============================ MACROFIED FUNCTIONS ===========================*/
  3. #define XMODEM_CFG(__MODE, __BUFFER)        \
  4.     do {                                    \
  5.         xmodem_t tCFG = {                   \
  6.             .pchBuffer = __BUFFER,          \
  7.             .tMode = __MODE                 \
  8.         };                                  \
  9.         xomdem_init(&tCFG);                 \
  10.     } while (0)

  11. /*============================ TYPES =========================================*/
  12. //! \name xmodem receive configuration
  13. //! @{
  14. typedef struct {
  15.     uint8_t *pchBuffer;         //!< receive buffer
  16.     enum {
  17.         XMODEM_BLOCK_SZ_256  = 0,
  18.         XMODEM_BLOCK_SZ_1K,
  19.     } tMode;
  20. } xmodem_t;
  21. //! @}

  22. /*============================ GLOBAL VARIABLES ==============================*/
  23. /*============================ LOCAL VARIABLES ===============================*/
  24. /*============================ PROTOTYPES ====================================*/

  25. /*! \brief initialize xmodem receive service
  26. *! \param pchBuffer xmodem receive configuration
  27. *  \retval true xmodem receive service initialization succeeded
  28. *  \retval false xmodem receive service initialization failed
  29. */
  30. extern bool xomdem_init(xmodem_t *ptCFG);

  31. /*! \brief xmodem task
  32. *! \retrun fsm_rt_cpl xmodem transfer finish
  33. *! \retrun fsm_rt_on_going xmodem transfer on-going
  34. *! \retrun fsm_rt_on_err xmodem transfer error
  35. *! \retrun fsm_rt_asyn xmodem receive a packet
  36. */
  37. extern fsm_rt_t xomdem_task(void);
  38. ...
复制代码

        ii.  支持多重缓冲模式(双缓冲是多重缓冲的最简单形式),用户需要在强制接口(离开他就不能
            正常实现功能的接口)中,通过返回值来提供下一个数据缓冲区的指针,通过这种方式,用户
            可以选择使用单缓冲(直接返回同一个缓冲的指针),或者选择多重缓冲(返回新缓冲区的指针)
            
            这种做法的好处是可以简化用户的行为(减少不必要的由灵活度带来的出错可能),同时减少
            不必要的接口API(比如用来设置Buffer的API)

  1. /*! \brief update next buffer or control transfer speed
  2. *! \param none
  3. *! \return buffer address
  4. */
  5. extern uint8_t * xmodem_call_back_receive(void);
复制代码


- 2015-1-14
    a. 更新Vs10xx驱动
        i.  完善vs10xx的驱动, 包括播放/停止/音量调节/复位/使能/禁能
   

  1. //! \name vs1003 interface
  2. //! @{
  3. DEF_INTERFACE (i_vs10xx_t)
  4.     fsm_rt_t    (*Init)     (vs10xx_cfg_t *ptVsCfg);
  5.     bool        (*Enable)   (void);
  6.     bool        (*Disable)  (void);
  7.     bool        (*Pause)    (void);
  8.     bool        (*Resume)   (void);
  9.     fsm_rt_t    (*Play)     (const uint8_t *pchStream, uint_fast16_t wSize);
  10.     fsm_rt_t    (*Volume)   (uint8_t chLeftVol, uint8_t chRightVol);

  11.     fsm_rt_t    (*Reset)    (void);
  12.    
  13.     struct {
  14.         fsm_rt_t    (*Write)    (uint8_t chRegAddr, uint16_t hwData);
  15.         fsm_rt_t    (*Read)     (uint8_t chRegAddr, uint16_t *pchData);
  16.     } Register;
  17.    
  18. END_DEF_INTERFACE (i_vs10xx_t)
  19. //! @}
复制代码

        ii. 修改console命令, 增加音乐停止播放、继续播放、音量调节、复位vs10xx模块等命令

  1. ROOT bool app_init(void)
  2. {
  3.     xmodem_usart_init();
  4.     console_usart_init();
  5.     console_init();

  6.     do {
  7.         static const command_t s_chCommand[] = {
  8.             {"wsci",    "\twsci \twrite sci register\r\n", &sci_write},
  9.             {"rsci",    "\trsci \tread sci register\r\n", &sci_read},
  10.             {"puase",   "\tpuase \tpuase\r\n", &play_pause},
  11.             {"resume",  "\tresume \tresume\r\n", &play_resume},
  12.             {"reset",   "\treset \treset vs10xx\r\n", &play_reset},
  13.             {"vol",     "\tvol \tvs10xx volume update\r\n", &play_vol},
  14.         };
  15.         console_cmd_register(s_chCommand, UBOUND(s_chCommand));
  16.     } while (false);

  17.     while (1) {
  18.         uart_play_task();
  19.         console_task();
  20.     }

  21.     return true;
  22. }


复制代码

- 2015-1-6
    a. 更新第一个测试版本的数据流图
        
- 2015-1-4
    a. 发布第一个测试版本
            该版本使用改进的xmodem协议进行简单的流控制,通过超级终端播放(下载)MP3文件到
        系统进行缓冲,并由系统发送到Vx10xx模块。
    b. 发布Vx10xx测试驱动
            该驱动包含基本的播放功能和寄存器操作接口。相关移植说明请参考压缩包中的说明文档
            
    c. 发布完整的原型机系统结构图
            


相关下载

    工程模板 (未更新xmodem驱动的版本)
    Vx10xx的培训文档
    xmodem驱动
    第一版硬件原理图
   



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入296汤圆

 楼主| 发表于 2015-1-4 23:36:40 | 显示全部楼层
占楼,占楼

出0入663汤圆

发表于 2015-1-4 23:38:25 | 显示全部楼层
本帖最后由 gzhuli 于 2015-1-4 23:41 编辑

沙发~

这个真是挑战自我了,话说09年RT-Thread就在STM32F103上实现了MP3软解和豆瓣FM在线播放,今天再搞这个的话还是树莓派比较有实用价值。

出0入0汤圆

发表于 2015-1-4 23:38:56 | 显示全部楼层
学习,mark。。。。

出0入0汤圆

发表于 2015-1-4 23:41:25 来自手机 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2015-1-4 23:41:39 来自手机 | 显示全部楼层
很有意思,关注中

出0入0汤圆

发表于 2015-1-4 23:41:57 | 显示全部楼层
围观,围观

出0入9汤圆

发表于 2015-1-4 23:46:27 | 显示全部楼层
排队学习

出0入0汤圆

发表于 2015-1-4 23:47:46 | 显示全部楼层
学习一下。努力让自己多学点知识。

出0入0汤圆

发表于 2015-1-4 23:50:20 | 显示全部楼层
学习学习!!!

出0入0汤圆

发表于 2015-1-4 23:50:35 | 显示全部楼层
马克   一直想加入傻孩子的助手行列,可惜工作忙得没心情

出0入0汤圆

发表于 2015-1-4 23:51:11 来自手机 | 显示全部楼层
关注中加油

出0入0汤圆

发表于 2015-1-4 23:51:49 | 显示全部楼层
关注!很是期待。

出0入0汤圆

发表于 2015-1-5 07:26:21 来自手机 | 显示全部楼层
靠!激动的说不出话啊

出0入0汤圆

发表于 2015-1-5 08:02:01 | 显示全部楼层
感兴趣,关注中

出0入93汤圆

发表于 2015-1-5 08:06:46 | 显示全部楼层
Hardware Design的id一看就是牛人

出0入0汤圆

发表于 2015-1-5 08:07:57 | 显示全部楼层
曾经做过类似的东西。关注楼主。。。

出0入0汤圆

发表于 2015-1-5 08:12:20 | 显示全部楼层
值得学习的项目,09年左右当是想使用LM3S做一个这样的,板子都做回来了,但是没有时间调试,一直放哪儿了

出0入0汤圆

发表于 2015-1-5 08:17:08 来自手机 | 显示全部楼层
支持一下  

出0入9汤圆

发表于 2015-1-5 08:29:08 | 显示全部楼层
跟大师学习了!

出0入0汤圆

发表于 2015-1-5 08:33:25 | 显示全部楼层
非常有激情啊

出0入0汤圆

发表于 2015-1-5 08:34:30 | 显示全部楼层
关注


学习。


出40入42汤圆

发表于 2015-1-5 08:43:07 | 显示全部楼层
关注学习中,这个项目挺有意思的

出0入0汤圆

发表于 2015-1-5 08:43:08 | 显示全部楼层
占座。
学习。

出0入0汤圆

发表于 2015-1-5 08:46:22 来自手机 | 显示全部楼层
前排占座,学习一下

出0入0汤圆

发表于 2015-1-5 08:47:02 | 显示全部楼层
这个喜欢。很有意思

出0入22汤圆

发表于 2015-1-5 08:49:40 | 显示全部楼层
我发现豆瓣FM电台放的歌曲都是不停重复的,每个分类的曲库就那么几十首歌,播完又重新循环,好久都不更新的,挺多了就不想再听了,这个要如何是好?

出0入0汤圆

发表于 2015-1-5 08:50:56 | 显示全部楼层
关注学习

出0入0汤圆

发表于 2015-1-5 08:52:08 | 显示全部楼层
关注,有空打板做一个,没做过M3+WIFI,跟做一个学习一下,

出0入0汤圆

发表于 2015-1-5 08:58:55 来自手机 | 显示全部楼层
关注,搬登子

出0入0汤圆

发表于 2015-1-5 09:00:06 | 显示全部楼层
值得学习

出0入0汤圆

发表于 2015-1-5 09:00:09 | 显示全部楼层
WIFI模块是EMW1062,taobao搜了一下,看介绍说对RAM要求较高,这个怎么解决?
EMW1062跟EMW3162对比,主要变化如下:

1:模块提供SDIO/SPI接口,片上不包含MCU;

2:mxchip提供STM32F2 和F4系列MCU驱动库,快速实现Wi-Fi网络通讯功能,可实现EMW3162具备的所有功能,如easylink等;(对MCU需求:Flash≥1M,RAM ≥96k,如果Flash 是512K,则没有OTA功能,若需要OTA功能,需外加SPI Flash)

出0入0汤圆

发表于 2015-1-5 09:01:53 | 显示全部楼层
关注。豆瓣FM 还是第一次听说。

出0入0汤圆

发表于 2015-1-5 09:03:57 | 显示全部楼层
跟大师学习。。。。真心不错

出0入0汤圆

发表于 2015-1-5 09:05:46 | 显示全部楼层
支持傻孩子的开源。。。

出0入296汤圆

 楼主| 发表于 2015-1-5 09:06:33 来自手机 | 显示全部楼层
jiaowoxiaolu 发表于 2015-1-5 08:49
我发现豆瓣FM电台放的歌曲都是不停重复的,每个分类的曲库就那么几十首歌,播完又重新循环,好久都不更新的 ...

有红星歌曲就会很不同了

出0入0汤圆

发表于 2015-1-5 09:06:59 | 显示全部楼层
关注  期待各位的大作

出0入0汤圆

发表于 2015-1-5 09:08:23 | 显示全部楼层
支持啊!好象野火的教程里也有一个关于播放豆瓣音乐的教程!

出0入0汤圆

发表于 2015-1-5 09:11:35 | 显示全部楼层
顶顶顶

出0入0汤圆

发表于 2015-1-5 09:13:33 | 显示全部楼层
有意思啊

出0入0汤圆

发表于 2015-1-5 09:14:17 | 显示全部楼层
支持,学习一下

出0入0汤圆

发表于 2015-1-5 09:16:16 | 显示全部楼层
顶一下。顺便看看某些解决方法。

出0入0汤圆

发表于 2015-1-5 09:22:01 | 显示全部楼层
排队 学习

出0入296汤圆

 楼主| 发表于 2015-1-5 09:22:18 来自手机 | 显示全部楼层
gzhuli 发表于 2015-1-4 23:38
沙发~

这个真是挑战自我了,话说09年RT-Thread就在STM32F103上实现了MP3软解和豆瓣FM在线播放,今天再搞 ...

团队开会选项目的时候,我还没来得及说啥,大家就决定做这个了。本来团队的初衷就是做大家觉得好玩的东西,所以就这么决定了,至于实用价值,中间很多产物的价值都高于这个项目的功能本身。这次是裸奔,所以和TR-Thread环境还是很不同的。

出0入0汤圆

发表于 2015-1-5 09:29:19 | 显示全部楼层
排队学习,很好玩啊

出0入0汤圆

发表于 2015-1-5 09:37:09 | 显示全部楼层
关注,学习一下。

出0入0汤圆

发表于 2015-1-5 12:20:30 | 显示全部楼层
围观围观!

出0入0汤圆

发表于 2015-1-5 12:46:23 | 显示全部楼层
好久不见版主大人了哦!
项目附带的编程模式,系统调度,界面编制等等都值得期待哦!

出0入663汤圆

发表于 2015-1-5 16:33:55 | 显示全部楼层
Gorgon_Meducer 发表于 2015-1-5 09:22
团队开会选项目的时候,我还没来得及说啥,大家就决定做这个了。本来团队的初衷就是做大家觉得好玩的东西 ...

嗯,其实这种项目最主要的功能就是验证系统架构思路。

出0入0汤圆

发表于 2015-1-5 16:59:23 | 显示全部楼层
帮凳子,学习。

出0入296汤圆

 楼主| 发表于 2015-1-5 17:01:25 | 显示全部楼层
gzhuli 发表于 2015-1-5 16:33
嗯,其实这种项目最主要的功能就是验证系统架构思路。

是啊,估计这也是为什么他们挑选这个作为入手点的原因。如果是我选,多半会做GUI之类的。

出0入0汤圆

发表于 2015-1-5 17:03:25 | 显示全部楼层
关注楼主。。。

出0入0汤圆

发表于 2015-1-5 17:10:35 | 显示全部楼层
好像豆瓣音乐的歌现在大部分都是MP4格式,AAC压缩的

出0入0汤圆

发表于 2015-1-5 17:23:09 | 显示全部楼层
持续关注,不知这种wifi模块价格如何

出0入296汤圆

 楼主| 发表于 2015-1-5 18:56:32 来自手机 | 显示全部楼层
本帖最后由 Gorgon_Meducer 于 2015-1-5 19:35 编辑
binaimei2007 发表于 2015-1-5 17:10
好像豆瓣音乐的歌现在大部分都是MP4格式,AAC压缩的

Vx1053支持AAC,不担心

出0入17汤圆

发表于 2015-1-5 19:57:37 | 显示全部楼层
好东西,跟上!!

出0入0汤圆

发表于 2015-1-5 20:05:45 | 显示全部楼层
围观楼主

出330入1925汤圆

发表于 2015-1-5 20:57:54 | 显示全部楼层
经常听豆瓣FM,这个真心好!~~

出0入0汤圆

发表于 2015-1-5 21:08:27 | 显示全部楼层
顶,喜欢这种原始的方式。

出0入0汤圆

发表于 2015-1-5 21:23:58 | 显示全部楼层
用单片ESP8266试试看,比较好玩

出0入0汤圆

发表于 2015-1-5 21:32:51 | 显示全部楼层
嗯,8266内部跑的就是lwip

出0入0汤圆

发表于 2015-1-5 22:45:37 | 显示全部楼层
网络收音机?和服务器的协议比较麻烦,播放MP3对这个论坛的人来说难度不大,尤其是还有解码芯片……

出0入0汤圆

发表于 2015-1-5 22:47:14 | 显示全部楼层
楼主哥哥 , 你的新书写完了没?

出0入0汤圆

发表于 2015-1-5 22:55:23 | 显示全部楼层
支持傻孩子=-= 都太厉害啦

出0入0汤圆

发表于 2015-1-5 22:55:38 | 显示全部楼层
P.s 期待楼主新书啊

出0入296汤圆

 楼主| 发表于 2015-1-6 10:21:04 | 显示全部楼层
更新数据流图

出0入0汤圆

发表于 2015-1-6 13:17:57 | 显示全部楼层
强烈支持老大事业

出0入0汤圆

发表于 2015-1-7 11:14:35 | 显示全部楼层
fengxin32 发表于 2015-1-5 22:45
网络收音机?和服务器的协议比较麻烦,播放MP3对这个论坛的人来说难度不大,尤其是还有解码芯片…… ...

做出来的确难度不是特大。如果是在小资源的片子上实现就有点难度了。

出0入0汤圆

发表于 2015-1-7 19:20:15 | 显示全部楼层
下面是我摸索的百度FM获取歌曲的方法供大家参考一下,百度FM获取的音乐现在都是MP3格式的,还可以获取歌词:
1.http://fm.baidu.com利用chrome浏览器网页的源码最后面可以查看到rawChannelList的json结构,里面包含了channel_id名
2.使用 http://fm.baidu.com/dev/api/?tn= ... n&id=channel_id 可以获取当前频道的歌曲列表
3.使用http://music.baidu.com/data/musi ... te=320&songIds=歌曲ID  可以获取歌曲的所有信息,包含歌曲地址,歌名 歌手等等
4.获取当前歌曲的歌词采用以下方法:
网址头:http://ting.baidu.com
/data2/lrc/13811641/13811641.lrc  歌曲代码可以在第三步的歌曲信息中获取
完整的歌词url:http://ting.baidu.com/data2/lrc/13811641/13811641.lrc

出0入0汤圆

发表于 2015-1-7 20:33:33 | 显示全部楼层
binaimei2007 发表于 2015-1-7 19:20
下面是我摸索的百度FM获取歌曲的方法供大家参考一下,百度FM获取的音乐现在都是MP3格式的,还可以获取歌词 ...

厉害,多谢了

出0入0汤圆

发表于 2015-1-7 20:47:31 | 显示全部楼层
跟着大牛们一起学习

出0入0汤圆

发表于 2015-1-7 20:49:49 | 显示全部楼层
这个很有意思,关注

出0入0汤圆

发表于 2015-1-7 21:04:05 | 显示全部楼层
心目中的大牛.

出0入0汤圆

发表于 2015-1-8 10:14:16 | 显示全部楼层
持续关注,跟着傻孩子一起学习

出0入0汤圆

发表于 2015-1-8 13:02:04 | 显示全部楼层
感觉挺有意思的,就是不知道硬件成本如何

出0入0汤圆

发表于 2015-1-11 17:11:37 | 显示全部楼层
建议还是用软解吧。硬解的话没有挑战性啊

出5入42汤圆

发表于 2015-1-11 18:20:37 来自手机 | 显示全部楼层
跟着傻孩子玩

出0入16汤圆

发表于 2015-1-11 18:50:51 来自手机 | 显示全部楼层
不错,支持!

出0入0汤圆

发表于 2015-1-11 19:33:15 | 显示全部楼层
厉害,期待新进展

出0入0汤圆

发表于 2015-1-11 20:48:52 来自手机 | 显示全部楼层
关注,期待啊

出0入0汤圆

发表于 2015-1-11 22:15:56 来自手机 | 显示全部楼层
这么好的开源挑战,值得关注,必须支持!

出0入0汤圆

发表于 2015-1-11 23:09:53 | 显示全部楼层
这个东西确实是个好东西,给力

出0入0汤圆

发表于 2015-1-12 01:53:03 | 显示全部楼层
  关注。

出0入0汤圆

发表于 2015-1-12 11:40:17 | 显示全部楼层
mark......

出0入0汤圆

发表于 2015-1-12 12:08:18 | 显示全部楼层
学习一下,关注中

出0入0汤圆

发表于 2015-1-12 12:23:39 | 显示全部楼层
占楼,占楼

出0入0汤圆

发表于 2015-1-12 12:55:03 | 显示全部楼层
紧密关注中                    

出0入0汤圆

发表于 2015-1-12 16:05:26 | 显示全部楼层
把SD卡当下载缓冲用?

出0入0汤圆

发表于 2015-1-12 22:51:53 | 显示全部楼层
之前公司有个同事弄过这个,传说很高大上,但是没机会仔细研究下,谢谢老大的资料

出0入0汤圆

发表于 2015-1-12 23:11:45 来自手机 | 显示全部楼层
跟大牛多学习

出0入0汤圆

发表于 2015-1-13 00:04:00 来自手机 | 显示全部楼层
用rt5350更合适吧

出0入0汤圆

发表于 2015-1-13 00:20:56 来自手机 | 显示全部楼层
如果能一片esp8266解决网络和运算就牛逼了

出0入0汤圆

发表于 2015-1-13 10:48:18 来自手机 | 显示全部楼层
很大,很高啊

出0入296汤圆

 楼主| 发表于 2015-1-13 11:07:03 | 显示全部楼层
vows 发表于 2015-1-13 00:20
如果能一片esp8266解决网络和运算就牛逼了

那就需要有esp8266的SDK和IDE了。

出0入0汤圆

发表于 2015-1-13 11:13:02 | 显示全部楼层
这个要严重关注一下

出5入0汤圆

发表于 2015-1-13 12:07:41 来自手机 | 显示全部楼层
这个必须支持

出0入0汤圆

发表于 2015-1-13 13:23:03 | 显示全部楼层
emw1062貌似底层不开源啊?!

出0入0汤圆

发表于 2015-1-14 10:28:49 来自手机 | 显示全部楼层
这个严重关注,很不错的呀,很好玩的样子

出0入296汤圆

 楼主| 发表于 2015-1-14 13:48:55 | 显示全部楼层
更新Vs10xx驱动

出0入0汤圆

发表于 2015-1-14 14:13:11 | 显示全部楼层
围观学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-17 22:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表