Часто, когда сталкиваешься с новым МК, возникают затруднения в самом начале (с базовыми модулями). Чаще всего, такое случается из-за не очень внимательного чтения документации, непривычной организации той самой документации или из-за банальных опечаток в программе. Особенно сложно бороться с такими ситуациями в отсутствие отладчика.
Дабы облегчить начало работы с МК RL78, создал пару примеров работы. Они не претендуют на полноту и универсальность, но помогут поморгать светодиодом, запустить прерывания и вывести строку на UART.
Примеры расположены на github: https://github.com/msalov/rl78-samples-R5F100SLAFB
Приветствуются отзывы, пожелания и исправления. Всё это можно оставлять здесь (в комментариях) или в виде issues на github: https://github.com/msalov/rl78-samples-R5F100SLAFB/issues
Здравствуйте!
ОтветитьУдалитьА нет ли у Вас примеров для работы с этими процессорами на ассемблере?
Здравствуйте!
УдалитьЕсть очень простой пример мигания светодиодом для RL78/G10 на ассемблере: https://gist.github.com/msalau/b5ad45e1441d97d277f50dadd279124e
Могу ещё покопаться, может что найдётся посложнее для полноты картины.
Спасибо огромное за отклик!
УдалитьПозвольте пару вопросов как более опытному:
После компиляции получиться out файл. Для компоновщика нужно что-нибудь писать? (я планирую начать с изучения GCC)
Программка коротенькая:)Стек и периферия в каком порядке должна инициализацию проходить?
Буду рад, если выложите программу подлиннее-посерьёзнее:)
По ссылке найдёте довольно аскетичный пример на ассемблере для RL78G/10
Удалитьhttps://github.com/msalau/rl78g10-soft-start
Обычно порядок инициализации таков:
1. Стек
2. Глобальные и статические переменные
3. Периферия.
1 и 2 делается в так называемом стартап коде, он обычно находится в файлах startup.S или crt0.S. В самом конце стартап код вызывает функцию main в которой вы делаете что вашей душе угодно, т.е. настраиваете периферию и так далее.
В проекте по ссылке 2 файла на ассемблере, они компилируются раздельно а потом компонуются. Компоновщику надо знать где и какая память есть у микроконтроллера, для этих целей служит специальный скрипт, который у меня в проекте называется rl78-R5F10Y16ASP.ld
Сборка:
rl78-elf-gcc -c -o main.o main.S
rl78-elf-gcc -c -o crt0.o crt0.S
Компоновка:
rl78-elf-gcc -T rl78-R5F10Y16ASP.ld -nostartfiles -nostdlib -o soft-start.elf main.o crt0.o
Создание образа для программатора:
rl78-elf-objcopy -O srec soft-start.elf soft-start.mot
Спасибо большое ещё раз! Уже скачал.
УдалитьЕщё, если Вас не затруднит, поясните, чем MOT файл отличается от BIN?
BIN - это содержимое памяти, а MOT - это контейнер для BIN, более пригодный для передачи и хранения. Их содержимое ничем не отличается, отличается лишь форма хранения. Описание MOT (Motorola S-record) - https://en.wikipedia.org/wiki/SREC_%28file_format%29
Удалить