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

Хранение данных во flash

Пишу на AVR Studio, в наличии есть Atmega8, внешнему устройству надо передавать 2кб информации, еепрома для этого не хватает, вопрос в том как использовать флеш, данные заранее известны, хотелось бы услышать как их туда проще записать и читать.

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


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

Пишу на AVR Studio, в наличии есть Atmega8, внешнему устройству надо передавать 2кб информации, еепрома для этого не хватает, вопрос в том как использовать флеш, данные заранее известны, хотелось бы услышать как их туда проще записать и читать.

 

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

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


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

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

а как записать сразу по известному адресу, если я например создам отдельный hex с данными, или как тогда в студио описать массив в flash, это вообще возможно?

читать как я понял в студии можноиспользуя LPM.

Изменено пользователем Handler

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


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

а как записать сразу по известному адресу, если я например создам отдельный hex с данными

и ещё как их читать в студии?

 

Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется).

Можно WinHex-ом (для С)...

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


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

Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется).

Можно WinHex-ом (для С)...

не совсем понял о чем Вы, мне вот надо добавлять в flash информации ко всем прогам что я пишу, было бы классно чтобы автоматом делать такие hex,

киньте пожалуйста ссылку на описание принципов формирования hex, может ручками все сделаю.

Изменено пользователем Handler

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


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

не совсем понял о чем Вы, мне вот надо добавлять во flash в последние 2кб информации ко всем прогам что я пишу, было бы классно чтобы автоматом делать такие hex

 

На чем пишете? На ассемблере? С помощью утилитки получаете текст для вставки в исходник,

пишете :

 
    .CSEG
    .ORG xxxx; адрес данных
my_table:
               ; тут текст, сгенеренный bin2asm....
    .DB  0x31,0x40,0x0,0x3,0xB0,0x12,0x46,0xF0
    .DB  0xC,0x93,0x18,0x24,0x3C,0x40,0x30,0x2
    .DB  0xE,0x43,0x30,0x12,0x28,0x0,0xB0,0x12

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


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

На чем пишете? На ассемблере? С помощью утилитки получаете текст для вставки в исходник,

пишете :

 
    .CSEG
    .ORG xxxx; адрес данных
; тут текст, сгенеренный bin2asm....

 

:a14:

спасибо огромное

а эта утилита есть в экзешнике а то гугл только исходникик подсовывает.

Изменено пользователем Handler

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


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

если у кого есть правильный bin2asm правильный, поделитесь пожалуйста, выложите где-нить или на мыло hr23(бобик)mail.ru

P.S. правильный это когда генерит строки сразу по 2-4-8 байт, вместо одного чтоб всю память занимать

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


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

http://srecord.sourceforge.net/

 

P.S. правильный это когда генерит строки сразу по 2-4-8 байт, вместо одного чтоб всю память занимать
Что значит "всю память"?

Какая разница по скольку байт на строке - получившийся файл всё равно не читать глазами, а компилятору всё равно.

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


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

http://srecord.sourceforge.net/

 

Что значит "всю память"?

Какая разница по скольку байт на строке - получившийся файл всё равно не читать глазами, а компилятору всё равно.

я тоже так думал, нашёл bin2asm в нете, он мне выдал так

        .DB 0x0d
        .DB 0x4f
        .DB 0x00
        .DB 0x00
        .DB 0x45
        .DB 0x00
        .DB 0x03
        .DB 0x6f
        .DB 0x00
        .DB 0x00
        .DB 0x6d
        .DB 0xa0
        .DB 0x00

AVR Studio написала кучу ворнингов вот таких

warning: .cseg .db misalignment - padding zero byte

потом нашел в хелпе

If the DB directive is given in a Code Segment and the expressionlist contains more than one expression, the expressions are packed so that two bytes are placed in each program memory word. If the expressionlist contains an odd number of expressions, the last expression will be placed in a program memory word of its own, even if the next line in the assemby code contains a DB directive. The unused half of the program word is set to zero. A warning is given, in order to notify the user that an extra zero byte is added to the .DB statement

получается что если размещать в строки по одному байту займет в памяти в 2 раза больше места

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


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

Вышлю свою на мыло. Она и Си и Асм формирует и делает сколько надо в строке.

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


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

AVR Studio написала кучу ворнингов вот таких

warning: .cseg .db misalignment - padding zero byte

потом нашел в хелпе

Тьху, совсем забыл про эту дуру. Я просто перелез на IAR ASM моментально, мне аврасм не понравился совершенно. А иаровски асм (только асм и линкер, без С) в конце 90-ых на сайте атмела бесплатно был.

 

Думаю, что в srecord с этим проблем нет, сможешь задать сколько нужно по ширине, сможешь попросить dw писать и т.п.

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


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

:) всем спасибо за программы и ответы , но сегодня сел и спецом написал под себя по 16 в строку чтоб меньше места в коде занимали :)

получилось быстрее самому чем искать и разбираться

Изменено пользователем Handler

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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