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

map приложите.

 

ну как всегда, Вы правы

 

код-то кодом, но цельный константный массив был объявлен как не константный, поэтому помещен в RW :)

 

Спасибо!

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


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

Я пользуюсь srecord. Очень мощная штука, все умеет что надо. HEX-файлы после нее едят все.

Пример скрипта для склеивания бутлоадера с приложением с вставкой CRC. При этом формируется дополнительный бинарник для шифрования (тоже с CRC).

 

C:\DEV\ARM\srec_cat.exe Application\application.hex --Intel --l-e-crc32 --max Application\application.hex --Intel --Output application.hex --Intel
C:\DEV\ARM\srec_cat.exe Bootloader\bootloader.hex --Intel --Output bootloader.hex --Intel
C:\DEV\ARM\srec_cat.exe bootloader.hex --Intel --fill 0xFF 0x0 0x5000 application.hex --Intel --Output combined.hex --Intel
C:\DEV\ARM\srec_cat.exe application.hex --Intel --offset -0x5000 --Output application.bin --Binary

Не проконсультируете по Srecord. Мне нужно подсчитать СRC16 hex-файла к примеру от нуля до адреса DDFD(включительно) и записать контрольную сумму по адресу DDFE. Какой должна быть строка вызова Srecord. И чем будут отличаться строки для вызова CRC16 CCITT и XMODEM?

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


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

На правах рекламы - вызов SRecord для подсчёта контрольной суммы векторов прерываний. Алгоритм - сумма int-ов по смещениям 0..0x20 должна быть равна нулю. Контрольная сумма записывается по адресу 0x14. Дальше "пристыковывается" остальной файл без изменений.

Под Ваши алгоритмы переделывайте самостоятельно - надо "растянуть" или обрезать файл (смотря по тому, что приходит от линкера) и подобрать правильный ключ для контрольной суммы.

 

echo add arm core vectors checksum
srec_cat ^
         %File%.bin -binary -crop 0x00 0x14 0x18 0x20 -LECN 0x14 4 4 ^
         %File%.bin -binary -crop 0x20 -max %File%.bin -binary ^
         -o %File%.bin -binary

 

PS ccitt / xmodem, насколько я понимаю, различаются полиномами.

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


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

После комеиляции размер кода 9056, размер BIN - 10772

Что туда еще напихалось?

 

Пользовал fromelf

Константы для инициализация переменных в операторах типа int A = 35; и т.п.

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


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

Не проконсультируете по Srecord. Мне нужно подсчитать СRC16 hex-файла к примеру от нуля до адреса DDFD(включительно) и записать контрольную сумму по адресу DDFE. Какой должна быть строка вызова Srecord. И чем будут отличаться строки для вызова CRC16 CCITT и XMODEM?

Пожалуйста:

srec_cat input.hex -i -f 0xFF 0 0xDDFE -lecrc16 0xDDFE -ccitt -o output.hex -i

Возможны варианты: -lecrc16 вставляет little endian CRC, а -becrc16 вставляет big endian CRC; -ccitt можно заменить на -xmodem.

Вообще-то там есть руководство. Но программа настолько универсальная, что руководство несколько сложное для новичков.

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


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

Пожалуйста:

srec_cat input.hex -i -f 0xFF 0 0xDDFE -lecrc16 0xDDFE -ccitt -o output.hex -i

Возможны варианты: -lecrc16 вставляет little endian CRC, а -becrc16 вставляет big endian CRC; -ccitt можно заменить на -xmodem.

Вообще-то там есть руководство. Но программа настолько универсальная, что руководство несколько сложное для новичков.

Выдаёт вот что:

srec_cat: input.hex: 4097: contradictory 0000DDFE value (previous = 31, this one = FF)

в приложенном файле hex

input.txt

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

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


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

Много лет назад получалось, а сейчас не могу вспомнить как.

 

Подскажите, что я делаю не так :

 

 

0)Микроконтроллер AT91SAM7S64, кварц 18.432МГц

1)Подтягиваю ногу TST к питанию

2)Включаю питание микроконтроллера

3)Снимаю низкий уровень с reset (запускаю микроконтроллер)

4)Снимаю высокий уровень с TST

5)Втыкаю разъём в USB - и Windows находит USB devise USB\VID_03EB&PID_6124\5&20B1BB6F&0&2

 

6)Установил драйвер SAM-BA_CDC.zip взятый вот с этой страницы http://www.atmel.com/tools/SAM7S-EK.aspx . Хотя нам написано что он для Vista , а у меня XP

В списке устройств появился AT91 USB to serial converter COM4

 

7)Запускаю SAB-BA , появляется маленькое окошко в котром я выбираю COM4 и AT91SAM7S64

Жму Connect, окошко исчезает и больше ничего не происходит.

8)Если повторить п7) ещё раз, вылезет ошибка Error in Startup Scriph

post-24702-1330581290_thumb.jpg

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


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

7)Запускаю SAB-BA , появляется маленькое окошко в котром я выбираю COM4 и AT91SAM7S64

Жму Connect, окошко исчезает и больше ничего не происходит.

8)Если повторить п7) ещё раз, вылезет ошибка Error in Startup Scriph

Драйвера идут в составе Sam-Ba, для версий Sam-Ba они свои, например, Sam-Ba 2.11 использует стандартный usbser.sys. Посмотрите папку в которой установлена Sam-Ba, там будут и драйвера.

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


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

Драйвера идут в составе Sam-Ba, для версий Sam-Ba они свои, например, Sam-Ba 2.11 использует стандартный usbser.sys. Посмотрите папку в которой установлена Sam-Ba, там будут и драйвера.

 

Установил драйвер из папки SAM-BA.

Теперь та же ошибка вылезает с первого раза и сразу.

Проверил на своей плата, и на демо плате LDM-SAM7S128 , результат один.

 

Кто-нибудь знает в чём ошибка?

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


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

 

 

О чудо ! У меня получилось ! Сейчас составлю подробную инструкцию от начала и до конца, и выложу здесь.

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


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

Сколько не искал, ни где не нашёл полной инструкции по прошивке через SAM-BA , от и до.

Поэтому пишу подробно здесь. Думаю кому-нибудь будет полезно.

 

Делал на компьютере в windows XP и на ноутбуке в windows 7. Действия везде одинаковые, и ошибки при неправельных действиях то

же одинаковые.

 

1) Что есть :

1.1 Keil

1.2 Плата с таким функционалом:

At91SAM7S64

Кварц 18.432МГц(с другим работать не будет)

RC ячейчка на ноге PLL , такая же как в документации на отладочную плату LDM-SAM7S(без неё работать не будет)

USB pull-up резистор подключен к +питания (хотя в документации на процессор сказано, что должен быть подключен к PA16)

Джамперы на ногах ERASE , TST , которми можно подтянуть ноги к +питания

 

2) Генерация файла BIN

В KEIL в опциях проекта вкладка User , строка Run User Program After Build , Run #1 пишу

C:\Keil\ARM\BIN40\fromelf.exe --bin -o "keil2.bin" "keil2.axf"

кде keil2 - название проекта, соответственно keil2.axf название файла, котрый после компиляции

появляется в папке проекта и из которого fromelf.exe делает keil2.bin

Левее строчки нужно почтавить галочку.

 

3) Установка SAM_BA

Взял SAM-BA 2.11 for Windows с сайта Атмела http://www.atmel.com/tools/SAM7S-EK.aspx

 

4) Запуск загрузчика в процессоре

Включаю питание процессора

Жду >10c

Замыкаю джампер ERASE

Жду >10c

Размыкаю джампер ERASE

Жду>10c

Отключаю питание

жду >10c

Включаю питание

Жду>10c

Замыкаю джампер TST

Жду >10c

Размыкаю джампер TST

Жду >10c

Отключаю питание

жду >10c

Включаю питание

Жду>10c

Втыкаю разъём в USB . Компьютер находит новое устройство.

 

5) Установка драйвера

Драйвер нужно выбрать вручную. Он в той папке, куда установился SAM-BA

C:\Program Files\ATMEL Corporation\sam-ba_2.11\drv

 

6)Програмирование

6.1 Повторяю действия П4) . Их нужно повторить перед каждым новым запуском SAM-BA, даже если устройсто есть в списке устройств и как

будто работает.

(как правило достаточно только сбросить питание и передёрнуть USB разъём)

У меня на компьютере работает только если подключать к usb контроллеру, а если к тем usb разъёмам что на материнской плате

то нет.

6.2 Жму CTRL+ALT+DEL

В диспетчере задач ищу sam-ba.exe . Если нахожу- закрываю.

Почему-то sam-ba.exe иногда остаётся в списке задач после предыдущего программирования и закрытия.

И если она там осталась, новая попытка программирование не удастся. При нажатии connect вылезет ошибка Error in Startup Scriph

Наблюдаю это и в XP на компьютере и в 7 на ноутбуке.

6.3 Запускаю SAM-BA

В появившемся маленьком окне выбираю AT91SAM7S64 , USBserial/com и жму connect

6.4 В открывшемся большом окне, в двух одинаковых местах указываю

Adress 0x100000

Size 0x10000

Левее кнопки Sent file выбираю свой бинарник, и жму Sent file .

6.5 Во время прошивки вылезает два сообщения, в обеих жму ОК

После прошивки жму Compare send file with memory

Если сообщений об ошибке не вылезло-прошивка удалась.

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


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

4) Запуск загрузчика в процессоре

Что-то в этом пункте не так: во-первых, ждать больше 10 секунд нужно только когда установлен джампер TST; во-вторых, устанавливается он ДО включения питания (по крайней мере на старых ревизиях кристалла его установка после включения уже ни на что не влияет).

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


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

Что-то в этом пункте не так: во-первых, ждать больше 10 секунд нужно только когда установлен джампер TST; во-вторых, устанавливается он ДО включения питания (по крайней мере на старых ревизиях кристалла его установка после включения уже ни на что не влияет).

Я написал как это получается делать у меня.

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


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

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

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

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

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

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

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

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

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

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