Перейти к содержанию
    

Зашивание текста в память микроконтроллера.

Всех приветствую.

 

Имеем AVR, работаем в асемблере в AVR Studio.

 

Требуется выводить на знакосинтезирующий ЖКИ небольшие объемы текста.

В связи с этим вопрос, а есть какой-либо более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе?

 

Может глупость спрошу, но, например, есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти.

 

Спасибо всем откликнувшимся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе чистотеоретически - такой файл можно написать самому - марока там не большая , а вот совсем другое дело заставить программатор писать в определённую область флеша.. Не все программаторы это могут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти

Можно вот так, например

      .cseg
      .org        0x1000      ;адрес загрузки
      .db         "the first string",0
      .db         "the second string",0
. . . . . . . . .
      .db         "the last string",0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 =GM= - это не то, автор же чётко указал -

"..более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе.."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно вот так, например

      .cseg
      .org        0x1000     ;адрес загрузки
      .db         "the first string",0
      .db         "the second string",0
. . . . . . . . .
      .db         "the last string",0

 

тогда еще метки добавить, чтобы можно было обращаться к каждой строки отдельно, а не искать ее по завершающим нулям

      .cseg
      ldi   ZL,low(first);
      ldi   ZH,high(first);

      ldi   ZL,low(second);
      ldi   ZH,high(second);

      .org        0x1000     ;адрес загрузки
       first:
      .db         "the first string",0
       second:
      .db         "the second string",0
. . . . . . . . .
      last     
                 .db         "the last string",0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 =GM= - это не то, автор же чётко указал - "..более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе.."

Я думаю, это то, что он просил. Всё равно надо где-то текст набивать. Думаю также, что автор ветки, чтобы ввести, скажем, ваш никнейм (Kuzmi4) делает таким образом

;               K    u    z    m    i    4
     .db      0x4B,0x75,0x7A,0x7D,0x49,0x34,0x00

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.atmel.ru/Binary/HD-44780.exe

Эта штука под Си заточена но если сишное обрамление убрать и добавить dB вместо того может и сгодится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда еще метки добавить, чтобы можно было обращаться к каждой строки отдельно, а не искать ее по завершающим нулям

Ну, это само собой, я дал только общую идею. Хотя сам давно уже не применяю такой подход, на мой взгляд, есть более продуктивный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у LCD текстовых еще обычно с кодировкой русской проблемы, поэтому я например, делал программу которая читала исходный текстовый файл простейшего формата:

имя строки (метка) пробел, а дальше до конца строки сам текст

текст преобразовывался по таблице кодировки и результат выводился в asm файл, который просто добавлялся в проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость =AVR=
а есть какой-либо более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе?

 

Может глупость спрошу, но, например, есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти.

Таких утилит бродит по Сети великое множество. Гибко это умеет делать, например, WinHex, с разной степенью гибкости (и вовсе без таковой) - различные поделия типа bin2asm. Гугль тебе в помощь по этим ключевым словам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо, пробежался по ответам, завтра буду осмысливать, эксперементировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут давеча "конвертировал" текстовый файл для заливки его в еепром - изменил расширение с txt на bin. Строки разделял, нажимая Enter. Правда строка получилась не с завершающим нулем, а с завершающим 0xd, зато проще не придумать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут давеча "конвертировал" текстовый файл для заливки его в еепром - изменил расширение с txt на bin. Строки разделял, нажимая Enter. Правда строка получилась не с завершающим нулем, а с завершающим 0xd, зато проще не придумать.

 

Ух ты!!!! ХИТЕР!!!

Если не требуется кирилица, то способ просто супер. Проще не придумаешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

foo.txt:

Требуется выводить на знакосинтезирующий ЖКИ 
небольшие объемы текста.
В связи с этим вопрос, 
а есть какой-либо более рацональный способ

 

toasm.sed:

1 i\
    .cseg
1 i\
    .org 0x1000
s/^/    .db "/
s/$/",0/

 

sed -f toasm.sed foo.txt >foo.asm

    .cseg
    .org 0x1000
    .db "Требуется выводить на знакосинтезирующий ЖКИ ",0
    .db "небольшие объемы текста.",0
    .db "В связи с этим вопрос, ",0
    .db "а есть какой-либо более рацональный способ",0

 

т.е. для таких простых преобразований при использовании стандартных программ (у кого как, а у меня sed и на ДВК-2 валялся под рукой), скриптики настолько просты, что никогда и не сохраняются, их заново набить проще, чем искать по диску.

Другое дело - кириллица, на всяких HD44780 кодировка странная, либо в том же sed пробовать глобальную замену делать, либо таки поискать нужную программу :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...