• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Работа с RTL00 под eclipse как запустить.

Алексей.

Active member
На убунте make-ом вообще без правок собрал проект (правил только userset.mk), до флешера пока не дошел (j-link пока не готов) рад что пока не вылезло всяких виндовых особенностей.
Немного удивлен что не определено в userset.mk директории для временных файлов, исходники проекта как обычно в домашней папке, а том этот у меня немножко шифруется на лету. Обычно все объектники отправляю в /tmp а тут немножко не удобно (может сам не разобрался), но "дарёному коню" и "на вас на всех не угодишь" как говориться...
 

Алексей.

Active member
pvvx, ну запуск GDB сервера я просто вынес в VS на отдельную команду - она всё-равно как для заливки в RAM требуется, так и для прошивки\отладки, потому не увидел смысла каждый раз запускать\закрывать его. GDB сервер кстати остаётся работать, даже если выдернуть SWD
При выдергивании самого jlink-а из юсб, JLinkGDBServer выгружается, сделал простенький скрипт, при подключении к юсб jlink-а стартую JLinkGDBServer
#!/bin/bash

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/SEGGER/JLink

function start_jlink_gdb {
if [ "$(pidof JLinkGDBServerExe)" ]
then
printf 'JLinkGDBServerExe already started\n'
else
/opt/SEGGER/JLink/JLinkGDBServerExe -device Cortex-M3 -if SWD -ir -endian little -speed 1000 > /dev/null 2>&1 &
fi
}

tail -F /var/log/syslog | grep --line-buffered 'Product: J-Link' | while read ; do start_jlink_gdb ; done
На линухе (на убунте) как то просто, а вот на виндовсе в цмд или повершеле, как отслеживать подключения юсб устройства пока не знаю. Кто пользуется виндовсами, подскажите пожалуйста.

Нашел решение на повершеле, запрашиваю устройства по маске, если подключен J-Link, запускаю JLinkGDBServer если он ещё не запущен
Код:
$exe = 'C:\Program Files (x86)\SEGGER\JLink_V630h\JLinkGDBServer.exe'
$arg = '-device','Cortex-M3','-if','SWD','-ir','-endian','little','-speed','1000'
Do {
 $a = Get-WmiObject Win32_PnPEntity –Filter "Name='J-Link driver'"
 if($a) {
  $proc = Get-Process
  if (!$proc.name.Contains('JLinkGDBServer')) {
   Start-process $exe -ArgumentList $arg
  }
 }
 start-sleep 1
} While (1)
 
Последнее редактирование:

pvvx

Активный участник сообщества
WM_DEVICECHANGE message (Windows)

Смысл загрузки JLinkGDB по включению к USB?

JLinkGDBServer.cmd:
Код:
@echo off
start JLinkGDBServer.exe -device Cortex-M3 -if SWD -ir -endian little -speed 1000
wsl $HOME/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gdb -x flasher/gdb_init.jlink
rem или: bash -l -c arm-none-eabi-gdb -x flasher/gdb_init.jlink
taskkill /F /IM JLinkGDBServer.exe
JLinkGDB исполняется из Windows, а связь с ним по TCP/IP port есть и в WSL.
Аналогично можно вызвать JLinkGDBServer.exe из среды WSL-Ubuntu
 
Последнее редактирование:

Алексей.

Active member
на c++ определение подключения устройств и без WM я делал через енумерацию девайсов, тут вопросов нет, как средствами ОС (устанавливая доп.ПО на виндовс) сделать это, вот в чем вопрос.
 
Последнее редактирование:

pvvx

Активный участник сообщества
на c++ определение подключения устройств и без WM я делал через енумерацию девайсов, тут вопросов нет, как средствами ОС (устанавливая доп.ПО на виндовс) сделать это, вот в чем вопрос.
Никак.
Ещё и с доп. ПО не всё в порядке, т.к. включенная поддержка в win10 USB3.1 по новому... т.е. если кратко - есть зависимости от драйверов, которые пишут производители контроллеров USB.
Пока сложилось впечатление, что там всё сыровато, c USB3.1+ ...
 
Последнее редактирование:

BublikoFF

New member
@pvvx Подскажите пожалуйста что то у меня python ошибку выдает, я сам в питон не очень, куда рыть?

===========================================================
Link (build)
===========================================================
/usr/local/bin/python3 RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py -a -r -o build/bin/ build/obj/build.axf
Traceback (most recent call last):
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 342, in <module>
RtlAImages Utility version 22.01.18
main()
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 337, in main
elf2image(args)
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 278, in elf2image
s.load(e.sections)
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 205, in load
self.data += '\0'
TypeError: can't concat str to bytes
make[1]: *** [build/bin/ram_all.bin] Error 1
make: *** [ram_all] Error 2
"make all" terminated with exit code 2. Build might be incomplete.
 

BublikoFF

New member
@pvvx Подскажите пожалуйста что то у меня python ошибку выдает, я сам в питон не очень, куда рыть?

===========================================================
Link (build)
===========================================================
/usr/local/bin/python3 RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py -a -r -o build/bin/ build/obj/build.axf
Traceback (most recent call last):
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 342, in <module>
RtlAImages Utility version 22.01.18
main()
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 337, in main
elf2image(args)
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 278, in elf2image
s.load(e.sections)
File "/Users/av/eclipse-workspace/RTL00MP3/RTL00_SDKV35a/../tools/rtlaimage/rtlaimage.py", line 205, in load
self.data += '\0'
TypeError: can't concat str to bytes
make[1]: *** [build/bin/ram_all.bin] Error 1
make: *** [ram_all] Error 2
"make all" terminated with exit code 2. Build might be incomplete.
Вроде как нашел ошибку
было: self.data += '\0'
а видимо нужно self.data += b'\x00'

и вот тут f.write('\xff')
заменить на f.write(b'\xff')
поправьте пожалуйста если не прав
 

pvvx

Активный участник сообщества
Вроде как нашел ошибку
было: self.data += '\0'
а видимо нужно self.data += b'\x00'

и вот тут f.write('\xff')
заменить на f.write(b'\xff')
поправьте пожалуйста если не прав
Тогда была версия Питона 2.7, а для 3+ синтаксис сменился...
 
Сверху Снизу