|
|
  |
Хранение данных во flash, как записывать и читать |
|
|
|
Jul 28 2007, 23:56
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

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

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(Handler @ Jul 29 2007, 02:56)  Пишу на AVR Studio, в наличии есть Atmega8, внешнему устройству надо передавать 2кб информации, еепрома для этого не хватает, вопрос в том как использовать флеш, данные заранее известны, хотелось бы услышать как их туда проще записать и читать. Если "данные заранее известны" и их не требуется изменять, то можно просто представить их в виде массива констант в программе, или записать по известному адресу при программировании.
|
|
|
|
|
Jul 29 2007, 00:12
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

|
Цитата(goodwin @ Jul 29 2007, 03:07)  Если "данные заранее известны" и их не требуется изменять, то можно просто представить их в виде массива констант в программе, или записать по известному адресу при программировании. а как записать сразу по известному адресу, если я например создам отдельный hex с данными, или как тогда в студио описать массив в flash, это вообще возможно? читать как я понял в студии можноиспользуя LPM.
Сообщение отредактировал Handler - Jul 29 2007, 00:57
|
|
|
|
|
Jul 29 2007, 00:52
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(Handler @ Jul 29 2007, 03:12)  а как записать сразу по известному адресу, если я например создам отдельный hex с данными и ещё как их читать в студии? Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется). Можно WinHex-ом (для С)...
|
|
|
|
|
Jul 29 2007, 01:00
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

|
Цитата(goodwin @ Jul 29 2007, 03:52)  Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется). Можно WinHex-ом (для С)... не совсем понял о чем Вы, мне вот надо добавлять в flash информации ко всем прогам что я пишу, было бы классно чтобы автоматом делать такие hex, киньте пожалуйста ссылку на описание принципов формирования hex, может ручками все сделаю.
Сообщение отредактировал Handler - Jul 29 2007, 01:12
|
|
|
|
|
Jul 29 2007, 01:11
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(Handler @ Jul 29 2007, 04:00)  не совсем понял о чем Вы, мне вот надо добавлять во 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
|
|
|
|
|
Jul 29 2007, 01:21
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

|
Цитата(goodwin @ Jul 29 2007, 04:11)  На чем пишете? На ассемблере? С помощью утилитки получаете текст для вставки в исходник, пишете : Код .CSEG .ORG xxxx; адрес данных ; тут текст, сгенеренный bin2asm.... спасибо огромное а эта утилита есть в экзешнике а то гугл только исходникик подсовывает.
Сообщение отредактировал Handler - Jul 29 2007, 01:39
|
|
|
|
|
Jul 29 2007, 21:25
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

|
если у кого есть правильный bin2asm правильный, поделитесь пожалуйста, выложите где-нить или на мыло hr23(бобик)mail.ru P.S. правильный это когда генерит строки сразу по 2-4-8 байт, вместо одного чтоб всю память занимать
|
|
|
|
|
Jul 30 2007, 10:02
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-12-06
Пользователь №: 23 156

|
Цитата(ReAl @ Jul 30 2007, 09:25)  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 раза больше места
|
|
|
|
|
Jul 30 2007, 11:26
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Handler @ Jul 30 2007, 12:02)  AVR Studio написала кучу ворнингов вот таких warning: .cseg .db misalignment - padding zero byte потом нашел в хелпе Тьху, совсем забыл про эту дуру. Я просто перелез на IAR ASM моментально, мне аврасм не понравился совершенно. А иаровски асм (только асм и линкер, без С) в конце 90-ых на сайте атмела бесплатно был. Думаю, что в srecord с этим проблем нет, сможешь задать сколько нужно по ширине, сможешь попросить dw писать и т.п.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|