реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Хранение данных во flash, как записывать и читать
Handler
сообщение Jul 28 2007, 23:56
Сообщение #1


Участник
*

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



Пишу на AVR Studio, в наличии есть Atmega8, внешнему устройству надо передавать 2кб информации, еепрома для этого не хватает, вопрос в том как использовать флеш, данные заранее известны, хотелось бы услышать как их туда проще записать и читать.
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jul 29 2007, 00:07
Сообщение #2


Местный
***

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



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


Если "данные заранее известны" и их не требуется изменять, то можно просто представить их в виде массива констант в программе, или записать по известному адресу при программировании.
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 29 2007, 00:12
Сообщение #3


Участник
*

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



Цитата(goodwin @ Jul 29 2007, 03:07) *
Если "данные заранее известны" и их не требуется изменять, то можно просто представить их в виде массива констант в программе, или записать по известному адресу при программировании.

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

Сообщение отредактировал Handler - Jul 29 2007, 00:57
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jul 29 2007, 00:52
Сообщение #4


Местный
***

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



Цитата(Handler @ Jul 29 2007, 03:12) *
а как записать сразу по известному адресу, если я например создам отдельный hex с данными
и ещё как их читать в студии?


Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется).
Можно WinHex-ом (для С)...
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 29 2007, 01:00
Сообщение #5


Участник
*

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



Цитата(goodwin @ Jul 29 2007, 03:52) *
Проще всего какими-нибудь утилитками bin2asm/bin2c (в зависимости от того, что требуется).
Можно WinHex-ом (для С)...

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

Сообщение отредактировал Handler - Jul 29 2007, 01:12
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jul 29 2007, 01:11
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 29 2007, 01:21
Сообщение #7


Участник
*

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



Цитата(goodwin @ Jul 29 2007, 04:11) *
На чем пишете? На ассемблере? С помощью утилитки получаете текст для вставки в исходник,
пишете :
Код

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


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

Сообщение отредактировал Handler - Jul 29 2007, 01:39
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 29 2007, 21:25
Сообщение #8


Участник
*

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



если у кого есть правильный bin2asm правильный, поделитесь пожалуйста, выложите где-нить или на мыло hr23(бобик)mail.ru
P.S. правильный это когда генерит строки сразу по 2-4-8 байт, вместо одного чтоб всю память занимать
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 30 2007, 06:25
Сообщение #9


Нечётный пользователь.
******

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



http://srecord.sourceforge.net/

Цитата(Handler @ Jul 29 2007, 23:25) *
P.S. правильный это когда генерит строки сразу по 2-4-8 байт, вместо одного чтоб всю память занимать
Что значит "всю память"?
Какая разница по скольку байт на строке - получившийся файл всё равно не читать глазами, а компилятору всё равно.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 30 2007, 10:02
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 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 раза больше места
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 30 2007, 11:02
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вышлю свою на мыло. Она и Си и Асм формирует и делает сколько надо в строке.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 30 2007, 11:26
Сообщение #12


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 писать и т.п.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Handler
сообщение Jul 30 2007, 20:42
Сообщение #13


Участник
*

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



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

Сообщение отредактировал Handler - Jul 30 2007, 20:42
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 10:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016