我买了一块AMB23; AN0400 Realtek Ameba-D Application Note里写了两种debug probe,一个是jlink,另一个似乎是realtek自己的debug probe,后面这个没见到哪里有卖,jlink太贵了,最近几年都是在ti/st/nxp的平台上开发很久没用过jlink了。
请问:
- debugger probe是开发必须的吗?还是象内核一样print也够了?esp32的开发就基本不用debugger probe,只打印就够了。
- 如果debugger probe是必须的,realtek那个自己的probe比jlink便宜很多吗?哪里有卖?还是就推荐jlink?jlink虽然贵但是对gdb的支持倒是很好的。
新人想听一下建议,准备在这个平台上试试开发了,虽然用命令行gdb有点难过但也还能接受。
wyy
2
我的个人经验,debugger probe 不是必须的,主要还是靠 printf debug。联网的应用大部分都不方便使用debug probe 那种暂停处理器看 memory 的方式。
我也没见过 AN0400 里面指的另一个 probe,主要还是用 jlink。我试过 jlink 最便宜的 EDU mini 是可以用的,就是接线需要个 adaptor board,但是经过一些设置后可以用 segger 的 ozone debugger。
非常感谢回答和建议。
再请教一个问题。根据AN0400文档,下载到目标板的方式似乎是两个,一个是用debugger probe,加上make flash命令,这个方式windows和linux均可,只要程序都装对了;另一个是用ImageTool,这个只有windows有,编译在ImageTool里写对地址用USB-serial cable就能下载;但ImageTool没有linux版本;我的理解对吗?
wyy
4
对的,那个有 GUI 的 ImageTool 只有 windows 版本。
如果必须用 linux,是可以尝试用 Arduino 里面的 image tool linux 版本。 这个是专门针对 Arduino 的要求写的,功能和选项都比较少,用起来也比较麻烦,但是基本运作原理和 GUI ImageTool 一样。
把 flashloader 和 ImageTool 需要的三个 bin 放进同样文件夹,提供 port 和 文件夹路径就可以了。
upload_image_tool_windows.exe C:\Users\username\AppData\Local\Arduino15\packages\realtek\tools\ameba_d_tools\1.0.8 COM3 ameba_rtl8721d Disable Disable
指令格式是可以从 Arduino 文件看出来的。
upload_image_tool_windows.exe "{runtime.tools.ameba_d_tools.path}" "{serial.port}" "{board}" "{build.auto_upload_mode}" "{build.erase_flash}" "1500000" {upload.verbose}
@wyy 非常感谢,我用arduino sdk里的upload_image_tool_linux
成功的在Ubuntu Linux上烧录了自己编译的固件。现在开始读Makefile了,没找到任何文档关于项目的源码结构的,以及怎么编译和运行除了project/realtek_amebaD_va0_example/GCC-RELEASE
这个文档里的例子之外的任何其它例子,比如ambd_sdk/component/common/example目录下似乎有很多例子,但不知道怎么使用。我注意到论坛里有其他人问了类似的问题,也见你有回答,我还没来得及都看完,正在努力学习。
wyy
6
SDK 结构和使用可以参考 AN0400 第二和第三章。
可以运行例子大概分两组:
- 硬件 / 外设例子 ( ADC, flash, GPIO, I2C, RTC, SDIO, SPI, timer, UART )
- 例子代码文件在
\project\realtek_amebaD_va0_example\example_sources
- 使用时应该直接复制粘贴代替
\project\realtek_amebaD_va0_example\src\src_hp
里面的文件
- 软件 / 通讯例子 ( HTTP, MQTT, OTA, SSL, TCP, WiFi )
- 例子代码文件在
\component\common\example
- 使用时需要更改
\project\realtek_amebaD_va0_example\inc\inc_hp\platform_opts.h
文件里面相对应的 #define
,去开启功能
- 有些功能还需要先在
make menuconfig
指令里面提前开启功能 ( BLE,MQTT )