Так уж сложилось, что средства отладки/программирования микроконтроллеров для GNU/Linux не так разнообразны, как для MS Windows. На данный момент, в свободном доступе нету способа прошить микроконтроллеры RL78 под GNU/Linux. Это (утилита rl78flash) мой вклад в средства разработки :)
Протокол загрузчика RL78 описан в R01AN0815EJ0100: RL78 Microcontrollers (RL78 Protocol A) Programmer Edition. Основываясь на этом документе, написал небольшую утилиту для программирования упомянутых выше МК.
На данный момент утилита умеет стирать/писать/проверять состояние флешь памяти и читать информацию о МК (имя и размеры доступной памяти). Не реализованны функции увеличения скорости обмена (до 10 раз) и защиты МК.
31 июля 2012 г.
26 июля 2012 г.
Предопределённые макросы GCC
Порой необходимо узнать опции компилятора в исходном тексте программы. Особенно часто это возникает при программировании микроконтроллеров, что бы парвильно обыграть особенности архитектуры. Про такие опции можно почитать в разделе документации, посвященной конкретному порту, например, для архитектуры Renesas RX: http://gcc.gnu.org/onlinedocs/gcc/RX-Options.html
Для таких целей есть специальная опция препроцессора -dM
Например, хочю узнать имя макроса, содержащего значение, передаваемое как параметр опции -mint-register=
Из этого списка ещё много чего можно почерпнуть: порядок байт, размеры типов, версию компилятора и т.д. и т.п.
UPD команды можно немного упростить:
Для таких целей есть специальная опция препроцессора -dM
Например, хочю узнать имя макроса, содержащего значение, передаваемое как параметр опции -mint-register=
$ touch ./t.h
$ rx-elf-gcc -E -dM -mint-register=0 ./t.h > ./int_reg_0
$ rx-elf-gcc -E -dM -mint-register=4 ./t.h > ./int_reg_4
$ diff ./int_reg_0 ./int_reg_4
112a113
> #define _RX_INT_REGISTERS 4./t.h
$ rm ./int_reg_0 ./int_reg_4
Из этого списка ещё много чего можно почерпнуть: порядок байт, размеры типов, версию компилятора и т.д. и т.п.
UPD команды можно немного упростить:
$ rx-elf-gcc -E -dM -mint-register=0 - < /dev/null > ./int_reg_0
$ rx-elf-gcc -E -dM -mint-register=4 - < /dev/null > ./int_reg_4
$ diff ./int_reg_0 ./int_reg_4
112a113
> #define _RX_INT_REGISTERS 4./t.h
$ rm ./int_reg_0 ./int_reg_4
25 июля 2012 г.
RL78 bootloader: первый шаг
Основным источником информации по протоколу загрузчика является документ R01AN0815EJ0100: RL78 Microcontrollers (RL78 Protocol A) Programmer Edition.
Протокол обмена - однопроводной UART по выводу TOOL0/P40. Надо делать из TXD выход типа "открытый коллектор". По ходу процесса ещё придётся прижимать TOOL0 к 0 и дёргать RESET.
Соорудил переходник со стандартного UART-а на однопроводной, да ещё с указанными возможностями. Выводы TXD и RXD - обменные, DTR - управление сбросом, а RTS - удерживать TOOL0 в 0 при необходимости.
Протокол обмена - однопроводной UART по выводу TOOL0/P40. Надо делать из TXD выход типа "открытый коллектор". По ходу процесса ещё придётся прижимать TOOL0 к 0 и дёргать RESET.
Соорудил переходник со стандартного UART-а на однопроводной, да ещё с указанными возможностями. Выводы TXD и RXD - обменные, DTR - управление сбросом, а RTS - удерживать TOOL0 в 0 при необходимости.
19 июля 2012 г.
Приехала долгожданная платка QB-R5F100SL-TB
На плате представитель свеженького семейства RL78 от Renesas R5F100SLAFB (RL78/G13). На борту 512 кБ флеша и 32 кБ ОЗУ. Ядро от 78K0 с небольшими улучшениями, а периферия от R8C. Обещают супер малое потребление. Ко всему этому у меня нет отладчика или даже программатора, так что веселиться придётся по полной и, причём, с самого начала.
Подписаться на:
Сообщения (Atom)