roboforum.ru

Технический форум по робототехнике.

mini2440 смена загрузчика в NOR флеше

mini2440 смена загрузчика в NOR флеше

Сообщение setar » 07 июл 2010, 01:14

Опишу процедуру смены загрузчика mini2440 непосредственно в NOR

Этот способ более кардинальный чем установка u-boot в NAND и мы не рискуем получить "кирпич" на руках даже в случае стирания области NAND содержащей код загрузчика.

Предварительно рекомендую ознакомиться и попробовать смену загрузчика в NAND forum96/topic8397.html
Это даст навык работы с командами u-boot

Для прошивки нам потребуется:
1. компьютер с аппаратным LPT портом и любой операционной системой windows
(возможно существуют аналоги для других ОС но поскольку такая прошивка обычно делается один раз за жизнь устройства, я не стал заниматься их поисками)
2. программа флешер :
H-JTAG V1.0 Release.part01.rar
(1.8 МиБ) Скачиваний: 0

H-JTAG V1.0 Release.part02.rar
(1.78 МиБ) Скачиваний: 0

3. программатор LPT-JTAG из комплекта mini2440

Описывать процесс самой прошивки я не буду, она достаточно подробна в картинках освещена в конце приложенного PDF
download.pdf
(295.43 КиБ) Скачиваний: 0

к описанию добавлю что прошивка ведётся в режиме NOR и самым первым действием нужно сменить тип программатора с USB на LPT
всё остальное строго по картинкам ровно до выбора файла прошивки.

далее у вас есть два варианта
первый более прост, кардинален и современен, из возможных моральных неудобств в результате его использоваия аплоад файлов на устройство будет возможен только посредством dfu-util (не будут работат usbpush и win dnw).
вся хитрость в использовании современной прошивки u-boot:
u-boot.bin.zip
(128.93 КиБ) Скачиваний: 0


на этом первый способ завершен :) работаем и наслаждаемся

второй гораздо более геморойный, но использование старой версии позволяет загружать файлы через usbpush и win dnw
нужно использовать старую прошивку :
uboot_old.zip
(146 байт) Скачиваний: 0
(старая прошивка u-boot 179444 байта с диска /OpenSourceBootloader/u-boot.bin )

и после смены прошивки произвести такое шаманство:

NOR режим

U-Boot 1.1.6 (Oct 27 2008 - 06:45:29)

DRAM: 64 MB
Flash: 1 MB
NAND: 128 MiB
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
UPLLVal [M:38h,P:2h,S:2h]
MPLLVal [M:5ch,P:1h,S:1h]
CLKDIVN:5h


+---------------------------------------------+
| S3C2440A USB Downloader ver R0.03 2004 Jan |
+---------------------------------------------+
USB: IN_ENDPOINT:1 OUT_ENDPOINT:3
FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>
NOTE: Power off/on or press the reset button for 1 sec
in order to get a valid USB device address.

Hit any key to stop autoboot: 0

##### open24x0 Bootloader for FA24x0 #####
[u] Download u-boot
[k] Download Linux kernel
[j] Download JFFS2 image
[y] Download YAFFS image
[d] Download to SDRAM & Run
[b] Boot the system
[f] Format the Nand Flash
[s] Set the boot parameters
[r] Reboot u-boot
[q] Quit from menu
Enter your selection:


«q»

FA24x0> usbslave
USB host is connected. Waiting a download.



Отправляем файл с линукса
Обращаю внимание что вот в этой операции мы загружаем уже современный бинарник u-boot который будет скопирован в NAND и работать будет именно он, старый нужен только для его загрузки.
calculate mini2440 # ./usbpush ./images/u-boot.bin
csum = 0x edc
send_file: addr = 0x30000000, len = 0x0003b5e0



на консоли mini2440:
Now, Downloading [ADDRESS:30000000h,TOTAL:243178]
RECEIVED FILE SIZE: 243178 (26KB/S, 9S)

FA24x0> nand write.e 0x30000000 0x0 0x40000

NAND write: device 0 offset 0x0, size 0x40000
262144 bytes written: OK


переключаемся в NAND режим

U-Boot 1.3.2-mini2440 (Jul 5 2010 - 18:12:58)

I2C: ready
DRAM: 64 MB
NOR Flash not found. Use hardware switch and 'flinit'
Flash: 0 kB
NAND: Bad block table not found for chip 0
Bad block table not found for chip 0
128 MiB
*** Warning - bad CRC or NAND, using default environment

USB: S3C2410 USB Deviced
In: serial
Out: serial
Err: serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot: 0

MINI2440 #
MINI2440 #
MINI2440 #
MINI2440 #
MINI2440 # dynpart
mtdparts mtdparts=mini2440-nand:0x00040000(u-boot),0x00020000(u-boot_env),0x00500000(kernel),0x07aa0000(rootfs)
MINI2440 # dynenv set u-boot_env
device 0 offset 0x40000, size 0x20000
45 4e 56 30 - 00 00 04 00
MINI2440 # saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done

перезагружаемся - готово
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Установка загрузчика u-boot в NAND

Сообщение Andrey37 » 07 июл 2010, 08:59

У меня на диске есть еще вот такая программулина для прошивки u-boot через jtag. Я ей разок пользовался.
Модератор Setar:сообщение перенес сюда, здесь оно очень в тему
Вложения
SJF2440.rar
(459.46 КиБ) Скачиваний: 0
Andrey37
 
Сообщения: 89
Зарегистрирован: 13 апр 2009, 09:29
Откуда: Иваново
Skype: b_andrey_37

Re: mini2440 смена загрузчика в NOR флеше

Сообщение setar » 07 июл 2010, 11:06

народ, подскажите плиз как в инженерном калькуляторе посчитать ближайший больший размер бинарного файла кратный 512
MINI2440 # nand info

Device 0: NAND 128MiB 3,3V 8-bit, page size 2048, sector size 128 KiB


сейчас я просто переписываю сильно бОльший блок с последними нулями всеми, просто интересно стало как правильно
:) совсем бинарные операции забыл, сто лет не программил
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 смена загрузчика в NOR флеше

Сообщение Vooon » 09 июл 2010, 00:58

Код: Выделить всёРазвернуть
#!/bin/bash
y=$(ls -la $1 | cut -d' ' -f5)
z=$[((($y/512)+1)*512)]
printf "0x%02X\n" $z


Самую чуточку причесал :)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: mini2440 смена загрузчика в NOR флеше

Сообщение setar » 09 июл 2010, 11:30

вчера в ночи часа 3-4 пытался интегрировать поддержку LCD экрана в бинарник u-boot
(для показа картинки-заставки при включении)
это делается изменением конфига inclides/configs/mini2440
по аналогии с neo1973_gta01.h (первая версия телефона openmiko) делается это примерно так:

Код: Выделить всёРазвернуть
/* Setar mod */                                                                                                                                    
                                                                                                                                                   
//#define CONFIG_CMD_UNZIP                                                                                                                         
                                                                                                                                                   
#define CONFIG_VIDEO                                                                                                                               
#define CONFIG_VIDEO_S3C2410                                                                                                                       
#define CONFIG_CFB_CONSOLE                                                                                                                         
//#define CFG_CONSOLE_IS_IN_ENV                                                                                                                   
//#define CONFIG_CONSOLE_EXTRA_INFO                                                                                                               
//#define CONFIG_CMD_BMP                                                                                                                           
//#define CONFIG_VIDEO_BMP_LOGO                                                                                                                   
#define CONFIG_VIDEO_BMP_GZIP                                                                                                                     
#define CONFIG_VIDEO_LOGO                                                                                                                         
#define CONFIG_SPLASH_SCREEN                                                                                                                       
#define CFG_VIDEO_LOGO_MAX_SIZE         (240*320+1024+100) /* 100 = slack */                                                                       
                                                                                                                                                   
#define CONFIG_VGA_AS_SINGLE_DEVICE                                                                                                               
#define VIDEO_FB_16BPP_PIXEL_SWAP                                                                                                                 
                                                                                                                                                   
#define VIDEO_KBD_INIT_FCT      0                                                                                                                 
#define VIDEO_TSTC_FCT          serial_tstc                                                                                                       
#define VIDEO_GETC_FCT          serial_getc                                                                                                       
                                                                                                                                                   
#define LCD_VIDEO_ADDR          0x33d00000                                                                                                         
                                                                                                                                                   
//#define CFG_BOOTMENU                                                                                                                             
                                                                                                                                                   
/* end Setar mod */

наступил на грабли что бинарник вылазит за 256k
отключил подсказку
//#define CFG_LONGHELP /* undef to save memory */
бинарник поместился но пока до конца не осилил

начальный процесс загрузки идет потом уходит в циклическую перезагрузку,
где то не учел размеры буферной памяти ...
экранчик пытается включаться (подсветка)
U-Boot 1.3.2-mini2440 (Jul 9 2010 - 02:38:16)

I2C: ready
DRAM: 64 MB
NOR Flash not found. Use hardware switch and 'flinit'
Flash: 0 kB
NAND: 128 MiB
*** Warning - bad CRC or NAND, using default environment

Video: 640x480x8 31kHz 59Hz
software interrupt
pc : [<00000004>] lr : [<33fb0388>]
sp : 33d5fe14 ip : 000cb000 fp : 77ff68d6
r10: 00000000 r9 : fd3fbaf2 r8 : 33d5ffdc
r7 : 00000000 r6 : 00000000 r5 : 00000000 r4 : 00000000
r3 : 00000379 r2 : 00000000 r1 : 00000000 r0 : 34024cc4
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...

не понял почему 640x480x8
копаю дальше...
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 смена загрузчика в NOR флеше

Сообщение Andrey37 » 09 июл 2010, 12:15

Посмотри этот u-boot. Тут при загрузки высвечивается логотип. LCD только ни 240x320, а 320x240.

[

Добавлено спустя 1 минуту 28 секунд:
Платформа эдентичная mini
Вложения
u-boot-1.1.6.tar.bz2
(1.58 МиБ) Скачиваний: 0
Andrey37
 
Сообщения: 89
Зарегистрирован: 13 апр 2009, 09:29
Откуда: Иваново
Skype: b_andrey_37

Re: mini2440 смена загрузчика в NOR флеше

Сообщение setar » 09 июл 2010, 12:36

спасибо, сейчас поковыряю его,
а здесь 240*320 или наоборот не важно - просто размер буфера считается, а вот где ставится разрешение ещё почитать в доках нужно ...
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 смена загрузчика в NOR флеше

Сообщение Andrey37 » 09 июл 2010, 12:59

Платформы практические идентичные. внешний вид разный. Вот то что высвечивается.
Вложения
PIC_10-07-09_12-51-17.jpg
PIC_10-07-09_12-51-17.jpg (15.03 КиБ) Просмотров: 9439
Andrey37
 
Сообщения: 89
Зарегистрирован: 13 апр 2009, 09:29
Откуда: Иваново
Skype: b_andrey_37

Re: mini2440 смена загрузчика в NOR флеше

Сообщение rotax » 07 авг 2010, 09:24

Может вопрос не к месту, но тему не хотелось создавать.
Есть ли у кого нибудь схема полноценного переходника с USB на LPT. Дело в том что у меня ноут, LPT переходник найти не могу, пробовал пару USB переходников, но они оказались портами принтера, находил ExpressCard/34 переходник ST-Lab C-370, но он так же оказался портом принтера. Соответственно не могу ни JTAG подключить, ни запрограммировать банальную AVRку
Аватара пользователя
rotax
 
Сообщения: 43
Зарегистрирован: 10 июн 2010, 23:31
Откуда: Краснодар
Skype: rotaxb
прог. языки: C
ФИО: Александр

Re: mini2440 смена загрузчика в NOR флеше

Сообщение Resident » 07 авг 2010, 10:54

AVR-ки замечательно шьются через вот этот девайс. Единственная проблема в том, чтобы собрать этот девайс, тебе нужно зашить AVR-ку. Вот такая вот рекурсия получается :)
А насчет лпт переходников незнаю, нагугли чонить, думаю полюбому что-то есть ;)
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.
Resident
 
Сообщения: 167
Зарегистрирован: 14 июн 2010, 17:19
прог. языки: Qt/C/C++

Re: mini2440 смена загрузчика в NOR флеше

Сообщение setar » 07 авг 2010, 19:15

есть мнение что полноценного порта не существует через USB на LPT
в суть не вникал но этот вопрос очень часто всплывает на форумах по CNC (координатные станки)
там все контроллеры до сих пор делают на LPT
Объясняют тем что на USB не построить реалтайм связи с девайсом из за ограничений в протоколе (прерывания просесса передачи)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 смена загрузчика в NOR флеше

Сообщение Resident » 07 авг 2010, 19:50

А такие девайсы для ноутов тож не катят?
Ну для настольных есть PCI решения, а вот разного рода netbookи аля "асер эспайр ван" или "асусь иеее" и им подобные отдыхают ввиду отсутствия в них и PCI, и PCMCIA :pardon:
Последний раз редактировалось Resident 09 авг 2010, 10:34, всего редактировалось 1 раз.
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.
Resident
 
Сообщения: 167
Зарегистрирован: 14 июн 2010, 17:19
прог. языки: Qt/C/C++

Re: mini2440 смена загрузчика в NOR флеше

Сообщение setar » 09 авг 2010, 10:27

такие катят, это полноценный LPT нужно только внимательно смотреть чтобы с драйверами нормально было
например чтобы присутствовал драйвер не только под win но и линукс - пригодится.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 смена загрузчика в NOR флеше

Сообщение rotax » 10 авг 2010, 14:08

нашел единственный модуль ExpressCard 34 ST-Lab C-370, но к сожалению оказалось что он так же является портом принтера :( Приступил к поиску оптимальной схемы USB-JTAG. Результаты выложу позже если кого то интересуют.
Аватара пользователя
rotax
 
Сообщения: 43
Зарегистрирован: 10 июн 2010, 23:31
Откуда: Краснодар
Skype: rotaxb
прог. языки: C
ФИО: Александр

Re: mini2440 смена загрузчика в NOR флеше

Сообщение rotax » 18 авг 2010, 15:58

В результате поисков пришел к выводу что наилучшим является USB-ARM7-ARM9-Cortex-M3-JTAG-Emulator-RS232-Converter
http://cgi.ebay.com/USB-ARM7-ARM9-Corte ... ltDomain_0
среди достоинств:
- удовлетворительная цена;
- высокая скорость, до 6 МБит/с;
- работа с устройствами питающимися от 1,2 до 5 В.
недостатки:
- дорогая доставка

Для самостоятельной сборки подходит следующий:
http://let.nm.ru/Instruments/USB_JTAG/usb_jtag.html
из схемы желательно убрать микросхемы ADuM, т.к. о них плохие отзывы, в следствии применения трансформаторов для развязки питания уязвимы к электромагнитным помехам, а так же возможны зависания.
(Можно заказать этот девайс без доработок http://cxemotexnika.org/2010/06/jtag-адаптер-на-микросхеме-ft2232d/)
Плюсы:
- низкая цена;
- высокая скорость, до 6 МБит/с;
- работа с устройствами питающимися от 1,2 до 5 В.
Недостатки:
- сложность самостоятельного изготовления печатной платы.
Аватара пользователя
rotax
 
Сообщения: 43
Зарегистрирован: 10 июн 2010, 23:31
Откуда: Краснодар
Skype: rotaxb
прог. языки: C
ФИО: Александр

След.

Вернуться в mini2440

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2