麦步社区-论坛

标题: 希望官方开源模拟器IDE [打印本页]

作者: compilelife    时间: 2018-6-22 07:28
标题: 希望官方开源模拟器IDE
说实话Visual MWatch不是一点难用。希望能开源,或单独给我源码改造下。

缺点:
1. 代码编辑无语法高亮,无行号……; 应该直接借助其他强大的编辑器即可
2. 编译错误很难看,基本不知道为啥出错
3. 用外部编辑源码后会被IDE覆盖……
4. 源码居然要放到IDE才能编,反人类……
5. 不支持mac,wine还得搭半天,还各种问题

麦步对于开发者而言可玩性是我见过最高的,但是开发工具这……80年代的么……
作者: compilelife    时间: 2018-6-22 09:58
反编译,初步摸清了编译过程,还没验证。分享下,按这个步骤理论上可以抛开IDE,自己命令行生成OUT.MAI和mw.exe了。

不过从IDE的日志输出也基本能看的出来,官方应该没意见吧


0. 清理
=====================
del .\\mbcc\\bin\\mw.exe
del .\\mbcc\\bin\\OUT.MAI
del OUT.MAI
del 1.log
del maibu_res.h
del user.mai
del *.o

1. pack 生成res头文件
=====================
pack.exe
copy .\\build\\maibu_res.h maibu_res.h

2. gcc 生成.o maibu_code
=====================
del tmp.log
del .\\build\\maibu_code
del OUT.maibu
arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m0  -I .\\SDK\\
arm-none-eabi-ld -r .\\*.o -o .\\build\\maibu_code
arm-none-eabi-readelf -a .\\build\\maibu_code> 1.log

3. pack 生成OUT.MAI
=====================
del *.o
pack.exe
copy OUT.MAI .\\mbcc\\bin\\OUT.MAI
copy maibu_res.h .\\mbcc\\include\\maibu_res.h

4. mw.exe
=====================
.\\mbcc\\bin\\gcc.exe -I.\\mbcc\\include -L.\\mbcc\\lib -o .\\mbcc\\bin\\mw.exe -DLINUX -DWINDOW -DNEW -lpthread -lm -lmaibu -lwsock32 -lcurl -lcurldll
作者: qs100371    时间: 2018-6-22 11:53
彩屏版的编译直接是批处理。放到黑白版一样可以。
作者: compilelife    时间: 2018-6-22 13:13
qs100371 发表于 2018-6-22 11:53
彩屏版的编译直接是批处理。放到黑白版一样可以。

多谢提醒,开始确实没注意到。

看了下,还是不够灵活。并没有解决我的痛点。

现在,我已可以实现这种工作方式:
1. 在VSCODE编辑、编译代码,生成OUT.MAI,生成mw.exe(用于模拟运行)
2. 采用自己熟悉的交叉编译的方式工作,哪一步出错清晰明了

还差一个模拟器抠不出来~
作者: Haichen    时间: 2018-6-22 15:20
强烈支持,若能用vscode开发,事半功倍不在话下
作者: qs100371    时间: 2018-6-22 16:10
官方的彩屏模拟器也是久久地出不来,估计是当初做模拟器的大神已经走了。
作者: compilelife    时间: 2018-6-23 00:46
终于,差不多搞定了。

先放效果图:

作者: compilelife    时间: 2018-6-23 00:53
windows下已经可以了,mac无力呀,不想跑wine。

实现效果:
1. 基本全程在vscode开发,模拟的时候还是得开Visual MWatch(只要开起来就OK,只用到他的模拟器)
2. 源码、编译输出文件、ide三者分离(混在一起对于有代码洁癖的人是折磨)
3. 用Makefile把任务分割成: 准备(生成res.h)、编译、打包、模拟,根据所在开发阶段只需要跑特定任务,避免一堆错误找不到自己要的信息
作者: Haichen    时间: 2018-6-23 07:51
求试用,晚会儿测试下
作者: Haichen    时间: 2018-6-23 08:01
我看模拟器是用qt写的,我用wsexplorer看了下,模拟表盘是用udp发送位图数据的,应该可以用gdi函数描点的方式刷新显示,至于四个按键的功能,应该可以用WINSOCK实现,具体方面本人学艺不精,先生看看有无参考价值。
作者: compilelife    时间: 2018-6-23 10:04
Haichen 发表于 2018-6-23 07:51
求试用,晚会儿测试下

多谢关注。

我只是想方便自己开发而已。
改造的还不是很完善,后续也不一定会发布我的改版。

我把刚完成的工作整理下,分享给你吧。 face_test.rar (48.35 KB, 下载次数: 365)

作者: Haichen    时间: 2018-6-23 21:16
本帖最后由 Haichen 于 2018-6-23 21:20 编辑
compilelife 发表于 2018-6-23 10:04
多谢关注。

我只是想方便自己开发而已。

多谢分享,由于没有nmake的源码,只测试了下使用,出现两个错误分别是1064和1073如下,什么情况?另,vscode可以正常调试吗?求分享launch.json和tasks.json
C:\Users\morning>nmake

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.

C:\Users\morning>nmake all

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1073: don't know how to make 'all'
Stop.

作者: compilelife    时间: 2018-6-23 21:42
Haichen 发表于 2018-6-23 21:16
多谢分享,由于没有nmake的源码,只测试了下使用,出现两个错误分别是1064和1073如下,什么情况?另,vsco ...

理论上是可以调试的。
mw.exe是用mbcc下的gcc编译的,可以添加-g选项添加调试信息,然后用gdb调试。

tasks.json可以自己添加,和直接执行命令行的差别不大。

我还没基于这个工具开发过应用,折腾这个也是为了自己方便开发,所以现在还不考虑公布给大家使用,也可能不会提供太多的帮助。毕竟精力有限嘛。

关于你的nmake问题,可能是没有在工程目录下执行。

nmake查找makefile默认是在工作目录下(也就是你的"C:\Users\morining"下没有Makefile)
作者: compilelife    时间: 2018-6-23 21:48
因为我是按经典的交叉编译的开发方式整理适合我的开发工具。

所以如果也想了解的话,最好先过一遍gcc+makefile+gdb+交叉编译,基本上对官方的IDE原理和我的Makefile原理就很熟悉了,也就可以开心地自己定制了

官方的IDE思路是做傻瓜式,一键操作,不过便捷不够,定制化也不够,所以被各种嫌弃……
我的思路是各种灵活、可定制、完全可控,比较适合已经熟悉嵌入式开发的同学

真要搞IDE的话,得花很大精力,既要简单易用容易入门,还要支持高度可定制化,麦步都凉了,搞起来不划算。
作者: Haichen    时间: 2018-6-24 07:16
compilelife 发表于 2018-6-23 21:48
因为我是按经典的交叉编译的开发方式整理适合我的开发工具。

所以如果也想了解的话,最好先过一遍gcc+make ...

同感,大家都忙的很,没时间精力更没动力搞这些东西,大都出于个人兴趣做点自己喜欢的事而已,搞ide,官方都搞的不伦不类,半死不活的,作为用户凭什么耗费那么大精力为别人做嫁衣裳,只是凭自己爱好随便搞搞罢了,说起来有点自私,先生勿笑,
作者: Haichen    时间: 2018-6-26 09:32
老兄的nmake工具好像没有考虑appinfo的资源文件啊
作者: XZY    时间: 2018-6-28 07:10
之前研究过一段时间,一直没有弄明白UUID, PACK.EXE,和模拟器实现的原理,最重要的是彩色的手表竟然没有模拟器
https://blog.csdn.net/wisepragma/article/details/66974234
https://blog.csdn.net/wisepragma/article/details/71330718
作者: wonderfarm    时间: 2018-7-11 13:26
其实抛开IDE进行编译我已经做好批处理了,但是看官方这死样,不想搞了
作者: compilelife    时间: 2018-7-12 23:26
本帖最后由 compilelife 于 2018-7-12 23:28 编辑

借助vscode开发比官方IDE舒心多了。后来还写了一个简易的xml配界面的工具。

分享下基于vscode开发这种方式,我写的一个小游戏——24点。

附件包含:
1. 24点工程源码。直接在里面用nmake编译、打包,告别万恶的官方IDE(参考上一个附件)
2. template工具,创建工程模板,无需写一行代码即可运行,专注写必要的代码才是王道
3. uiconvert工具,从自定义的xml格式生成界面代码,不写重复代码,分离界面和业务

友情提醒:只是想分享一下,秀一波操作,不保证维护附件中的工具,也不保证会及时回答问题~




借助vscode开发.zip

1.91 MB, 下载次数: 507


作者: Haichen    时间: 2018-7-18 08:12
本帖最后由 Haichen 于 2018-7-18 08:16 编辑

先顶再看,最近入了个蓝牙开发板,改成了蓝牙汽车遥控,从此不用带那么大个汽车遥控钥匙了,只需用手机app遥控,正在研究能不能用手表直接遥控,老兄有相关的资料吗
作者: smlqf3    时间: 2018-7-30 19:04
看帖子的都发表一下看法











名人   http://www.tglin.idv.tw/   2018年07月30日 中學生手抄報
中醫藥茶    女士捲髮 http://www.gfgfgf.com.tw/zybj/nvxbj/  民間故事   中醫藥茶       http://www.gfgfgf.com.tw/mzyy/my/  簽名小語大全
作者: smlqf3    时间: 2018-9-4 23:10
我的妈呀,爱死你了











新疆   http://www.gfgfgf.com.tw/zycs/zycs/   2018年09月04日 教師節
中醫膏藥    好聽的句子 https://www.2so.tw/  殺馬特   中醫運動       http://www.gfgfgf.com.tw/zycs/zycs/  畢業祝福語
作者: XZY    时间: 2018-10-6 19:37
如果是黑白的手表可以参考https://blog.csdn.net/wisepragma/article/details/71330718
如果是彩色的那就只能编译后下载,强烈官方出模拟器,或者公开原理

作者: XZY    时间: 2018-10-6 19:45
本帖最后由 XZY 于 2018-10-6 19:47 编辑

彩色手表命令行编译
  1. @echo on
  2. @cls
  3. @set proj=%cd%
  4. @set USE_SIMULATOR=NTRUE

  5. @set CCDIR=%MB_EDITOR_DIR%\tools


  6. @title Falling.Star.Array
  7. @PROMPT $g
  8. @rem MODE CON:COLS=120 LINES=40
  9. @ECHO  on
  10. @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  11. @ color 0a
  12. @REM color f6

  13. @set PATH=%CCDIR%\mbcc\mingw32\bin;%CCDIR%\compiler\bin;%CCDIR%\mbcc\bin;%path%;%CCDIR%\bin

  14. @rem 目录名作程序名
  15. @for %%i in (.) do @set fileName=%%~ni
  16. @set exeName=%fileName%.exe
  17. @title  %fileName%
  18. @rem if not exist %proj%\sys.mai     copy /y /b %CCDIR%\mbcc\add\sys.mai %proj%\sys.mai
  19. @if not exist %proj%\build     xcopy /y /e /i %CCDIR%\mbcc\add\build %proj%\build

  20. @rem @if exist OUT.MAI @del /f  /q  OUT.MAI >>nul
  21. @REM @tasklist |findstr "%exeName%"
  22. @REM @if "%errorlevel%" == "0" @TASKKILL /F  /IM  %exeName%
  23. @REM @if exist %exeName%  @del /f  /q   %exeName%

  24. @echo.
  25. @echo ***压制图片***
  26. @pack_rgb.exe | findstr "failed"
  27. @set ERRNO=%errorlevel%
  28. @if "%ERRNO%" == "0" (
  29. @ECHO ~~~PACKING ERROR!!!!~~~~
  30. @goto err_theend
  31. )
  32. @rem pause
  33. @echo.
  34. @echo ***编译***
  35. @rem -mcpu=cortex-m0 不能编译成m4载入会死机
  36. arm-none-eabi-gcc -c *.c  -Wall  -std=c99 -mthumb -mcpu=cortex-m0 -I %CCDIR%\RGB_SDK -I %proj%\build  
  37. @REM @echo ERRORLEVEL=%ERRORLEVEL%      
  38. @if ERRORLEVEL 1 goto err_theend

  39. @echo.
  40. @echo ***链接***
  41. arm-none-eabi-ld -r  *.o -o %proj%\build\maibu_code
  42. @REM @echo ERRORLEVEL=%ERRORLEVEL%
  43. @if ERRORLEVEL 1 goto err_theend

  44. @echo.
  45. @echo ***列表***
  46. rem arm-none-eabi-readelf  -Wall -a %proj%\build\maibu_code
  47. @REM @echo ERRORLEVEL=%ERRORLEVEL%
  48. @if ERRORLEVEL 1 goto err_theend

  49. @echo.
  50. @echo ***编译成功***

  51. @REM copy OUT.MAI .\mbcc\bin\OUT.MAI
  52. @rem copy maibu_res.h .\mbcc\include\maibu_res.h
  53. @rem gcc.exe *.c -o "%CCDIR%\mbcc\bin\MBY.exe"  -I "%CCDIR%\mbcc\include" -L "%CCDIR%\mbcc\lib" -lmaibu -lpthreadGC2 -DLINUX -DWINDOW -DHAVE_STRUCT_TIMESPEC -DNEW -lm -lwsock32 -lcurl -lcurldll



  54. @if "%USE_SIMULATOR%"=="TRUE" (
  55.      @echo CREATING WINDOWS SIMULATOR...
  56.      @if exist %exeName%  @del /f  /q   %exeName%
  57.      gcc.exe  -std=c99  -Wall  *.c -o %exeName% -DUSE_SIMULATOR -I %proj%\build -I "%CCDIR%\mbcc\include" -L "%CCDIR%\mbcc\lib" -lmaibu -lpthreadGC2 -DLINUX -DWINDOW -DHAVE_STRUCT_TIMESPEC -DNEW -lm -lwsock32 -lcurl -lcurldll


  58.      @echo.
  59.      @echo  add statements below for simulating
  60.      @echo  int main^(^)
  61.      @echo  {
  62.      
  63.      @echo       #ifdef USE_SIMULATOR
  64.      @echo                 simulator_init^(^);                                    
  65.      @echo       #endif
  66.            @echo.

  67.      
  68.            @echo.

  69.    
  70.      @echo       #ifdef USE_SIMULATOR
  71.      @echo                 simulator_wait^(^);                  
  72.      @echo       #endif
  73.      @echo                return 0;
  74.      @echo  }     
  75.       @if exist %exeName% (
  76.                           @echo.
  77.                           @echo successful
  78.                                                   
  79.                           @echo running simulator...
  80.                           start  mbx.exe
  81.                           @rem ping 127.0.0.1 -n 2 >nul
  82.                           sleep 500
  83.                           @echo running application...
  84.                          @rem start %exeName%
  85.                           cmd /c  %exeName%
  86.                      )

  87. )
  88. @REM ld.exe  "-Bdynamic" "-o" "%CCDIR%\mbcc\bin\mw.exe" "%CCDIR%/mbcc/lib/crt2.o" "%CCDIR%/mbcc/lib/gcc/mingw32/4.8.1/crtbegin.o" "-L%CCDIR%\mbcc\lib " "-L%CCDIR%/mbcc/lib/gcc/mingw32/4.8.1" "-L%CCDIR%/mbcc/lib/gcc" "-L%CCDIR%/mbcc/lib" "%CCDIR%\Temp\ccctry7l.o" "-lmaibu" "-lpthreadGC2" "-lm" "-lwsock32" "-lcurl" "-lcurldll" "-lmingw32" "-lgcc" "-lgcc_eh" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32" "-lshell32" "-luser32" "-lkernel32" "-lmingw32" "-lgcc" "-lgcc_eh" "-lmoldname" "-lmingwex" "-lmsvcrt" "%CCDIR%/mbcc/lib/gcc/mingw32/4.8.1/crtend.o"

  89. @REM as.exe  "-I" "%CCDIR%\mbcc\include" "-o" "%CCDIR%\Temp\ccctry7l.o" "%CCDIR%\Temp\cc9BSAJq.s"
  90. @if not %errorlevel% equ 0 (
  91.      @echo 编译出错了,详细查看上面
  92.     @CMD /K
  93.      @pause
  94. )
  95. @echo ***再压制(鬼知道这一步做什么,你不执行会显示不正常)***
  96. @pack_rgb.exe | findstr "failed"
  97. @set ERRNO=%errorlevel%
  98. @if "%ERRNO%" == "0" (
  99. @ECHO ~~~PACKING ERROR!!!!~~~~
  100. @goto err_theend
  101. )



  102. @if  not  "%USE_SIMULATOR%"=="TRUE" (
  103.     REM  sleep 1500
  104.     REM  exit
  105.     @del /f /s /q   %fileName%.MAI
  106.     @ren out.mai %fileName%.MAI
  107.     @echo.
  108.     @ECHO 生成:%fileName%.MAI 成功
  109.     @color 0e
  110.     rem  exit
  111.   @rem pause
  112. )                    

  113. @cmd /k
  114. exit

  115. :err_theend
  116. @color 0c
  117. @echo !!!!!!!!!!!ERROR:SOMETHING WRONG HAPPENED!!!!!!!!!!!!!
  118. @ECHO.
  119. echo 
  120. @cmd /k

复制代码

作者: mark    时间: 2018-11-13 11:00
XZY 发表于 2018-6-28 07:10
之前研究过一段时间,一直没有弄明白UUID, PACK.EXE,和模拟器实现的原理,最重要的是彩色的手表竟然没有模拟 ...

大神膜拜
作者: mark    时间: 2018-11-13 11:04
有修改好的IDE可以私信论坛管理,开一个专门的帖子供其他同学下载使用,感谢感谢!




欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2