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

 
 
 
Reply to this topicStart new topic
> LPC3250 NAND Flash алгоритм для MT29F4G08 в Keil
sash_u
сообщение Feb 1 2011, 10:22
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 14-12-07
Пользователь №: 33 304



Имеется кит от FDI DK-57TS-LPC3250 с АРМ работаю недавно и столкнулся со следующей проблемой.
Проект на С собран в Keil 4.14.4. Для прошивки микроновкой NAND типа MT29F4G08 в Keil нет алгоритма программатора, равно как и нет вообще никакого алгоритма под LPC3250.
Решил собрать свой алгоритм по аналогии остальных. За основу взял проект \ARM\Flash\LPC31xx_NAND_LP\ где вроде как использовалась похожая флеша. В качестве кода для аппаратного флеш контроллера заюзал файл FlashHW.c с бутлоадера \LPC3250\Bootloader_NAND\ . Всё вроде скомпилилось без проблем, но при использовании этого алгоритма кеил вываливается по таймауту флеши sad.gif при программировании. На стирании вроде всё проходит нормально(судя по логу) но флеша не стирается sad.gif
Может кто собирал подобный алгоритм для LPC3250 и MT29F4G08?

Прилагаю файл проекта.
Может не те адреса указываю при вызове программатора?
в качестве RAM for Algorithm : START 0x08000000 Size 0x8000
снизу окна(как я понял адреса ФЛЕША) : START 0x30000000 Size 0x10000000

Может кто работал с LPC3250, как узнать по каким адресам обращаться к самой внешней флеше? Вбил 0x30000000 в качесте базового(как из примера) но что-то гложат сомнения.

P.S.: Флешу попытался обьявить как 256Мб вместо 512Мб, т.к. смутило то что в описании аппаратного флеш контроллера АРМа написано о поддержке только 2Гбит флеша

Заранее спасибо.
Прикрепленные файлы
Прикрепленный файл  MT29F4G08.rar ( 15.87 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post
ra9ftm
сообщение Feb 2 2011, 09:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 8-01-09
Пользователь №: 43 014



А что мешает загружать в NAND с помощью S1L?
Для Keil в режиме отладки можно использовать SDRAM, которую необходимо предварительно проинициализировать. В CDL (common driver library) был пример проекта вроде бы. CDL можно взять здесь ftp://lpclinux.com
В CDL также есть специальный проект (который сам запускается в iRAM) для прогрузки загрузчиков во флеш.
Go to the top of the page
 
+Quote Post
sash_u
сообщение Feb 2 2011, 15:49
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 14-12-07
Пользователь №: 33 304



Цитата
А что мешает загружать в NAND с помощью S1L?

Прежде всего хотелось бы лить напрямую фо флеш, не используя S1L, т.к. в перспективе его место займёт u-boot
Так что хочеться уже разобраться с кейловским программатором.
Цитата
Для Keil в режиме отладки можно использовать SDRAM, которую необходимо предварительно проинициализировать.

А собственную IRAM для отладки можно использовать подобным образом, при условии что код небольшой?
А как настроить Keil чтобы он заливал код в IRAM или SDRAM для отладки?
Go to the top of the page
 
+Quote Post
ra9ftm
сообщение Feb 3 2011, 05:59
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 8-01-09
Пользователь №: 43 014



С помощью u-boot тоже можно залить bin файл во флеш конечно, но сам uboot как-то долго грузится да и громоздкий он.

В IRAM отлаживаться тоже можно. Примеры проектов есть в CDL v.1.20 для phy3250, вот здесь ini- и scatter файлы nxpmcu\software\csps\lpc32xx\bsps\phy3250\examples\common\uvision3\. В новой CDL эти файлы переделаны на запуск из SDRAM. С любой другой (не Phytec) платой из IRAM должно всё отлаживаться без проблем. cdl v1.20 уже нету на сайте nxp, его вы можете посмотреть здесь http://gyrolab.ru/tornado/files/cdl_nxp/lp...x_cdl_v1_20.zip

Кстати в самом Keil'e вроде бы должны быть загрузчики и примеры для lpc3250. По крайней мере здесь об этом пишут http://www.phytec.com/pdf/manuals/ARM9/LPC..._quickstart.pdf
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 3 2011, 09:11
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Может с сигналом FLASH_RDY проблема.
Загрузчики его обязательно требуют, а некоторые программные реализации могут обходится без него.
Go to the top of the page
 
+Quote Post
sash_u
сообщение Feb 3 2011, 10:58
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 14-12-07
Пользователь №: 33 304



Цитата(ra9ftm @ Feb 3 2011, 07:59) *
В IRAM отлаживаться тоже можно. Примеры проектов есть в CDL v.1.20 для phy3250, вот здесь ini- и scatter файлы nxpmcu\software\csps\lpc32xx\bsps\phy3250\examples\common\uvision3\. В новой CDL эти файлы переделаны на запуск из SDRAM. С любой другой (не Phytec) платой из IRAM должно всё отлаживаться без проблем. cdl v1.20 уже нету на сайте nxp, его вы можете посмотреть здесь http://gyrolab.ru/tornado/files/cdl_nxp/lp...x_cdl_v1_20.zip

Спасибо большое! Удалось благодаря примеру в ini файле в дебаге работать через IRAM.
Теперь осталось с флешой разобраться


Цитата(AlexandrY @ Feb 3 2011, 11:11) *
Может с сигналом FLASH_RDY проблема.
Загрузчики его обязательно требуют, а некоторые программные реализации могут обходится без него.

Спасибо, попробую проверить.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 3 2011, 12:30
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Сделал описание загрузки для своего проекта, может поможет. wink.gif
Bootstrap в LPC3250
Go to the top of the page
 
+Quote Post
sash_u
сообщение Feb 4 2011, 09:01
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 14-12-07
Пользователь №: 33 304



Цитата(AlexandrY @ Feb 3 2011, 14:30) *
Сделал описание загрузки для своего проекта, может поможет. wink.gif
Bootstrap в LPC3250

Спасибо за описание.
Есть 2 вопроса:
1) В окне где выбран алгоритм программирования что за адреса должны быть прописаны (поле Address Range)?
2) А пример проекта для ARMGeoSpyder NAND Flash нельзя случайно взглянуть ? wink.gif У вас в проекте используется подобная NAND как и на моём ките.
Может возможно взглянуть на код инициализации MLC_NAND контроллера (MLC_TIME_REG и т.п.)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 4 2011, 09:21
Сообщение #9


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(sash_u @ Feb 4 2011, 11:01) *
Спасибо за описание.
Есть 2 вопроса:
1) В окне где выбран алгоритм программирования что за адреса должны быть прописаны (поле Address Range)?
2) А пример проекта для ARMGeoSpyder NAND Flash нельзя случайно взглянуть ? wink.gif У вас в проекте используется подобная NAND как и на моём ките.
Может возможно взглянуть на код инициализации MLC_NAND контроллера (MLC_TIME_REG и т.п.)


Адрес прописывается такой из какого должна работать загружаемая программа. Если в DDR то внешней RAM 0x8000 0000 , если внутренняя RAM то 0x0800 0000
А сам модуль программирования должен прикинуться (т.е. дать ответ по протоколу), что он именно туда и предназначен загружать, а грузить может куда хочет на самом деле.
Разрулить эту коллизию должен начальный загрузчик.

Мой программатор NAND использует SLC NAND контроллер, поэтому вам не подойдет. Поскольку таким образом загруженная программа непосредственно bootstrap-ом LPC3250 не распознается.
Go to the top of the page
 
+Quote Post
sash_u
сообщение Feb 4 2011, 12:49
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 14-12-07
Пользователь №: 33 304



при попытке прописать в адрес 0x0800 0000 получаю ошибку
No Algorithm found for: 00000000H - 000003AFH
До этого прописывал 0x0000 0000 но тогда вывалиается по таймауту флеша
Скрин в приложении.
Как-то странно выходит, для чего вообще алгоритму программирования знать где выполняться должна загружаемая программа?
Для работы самого алгоритма RAM for algorithm своя.

Цитата(AlexandrY @ Feb 3 2011, 11:11) *
Может с сигналом FLASH_RDY проблема.
Загрузчики его обязательно требуют, а некоторые программные реализации могут обходится без него.

С сигналом всё ОК. В коде честная проверка на готовность ( while (!(MLC_ISR & 0x01))wink.gif


Обнаружил принеприятнейшую вещь sad.gif
В коде для аппаратного флеш контроллера, который я брал из файла FlashHW.c с бутлоадера \LPC3250\Bootloader_NAND\ нет поддержки Large Page ((

else { // Large Page Device
return (NAND_NOT_IMPLEMENTED_ERROR);
}
А моя память как раз такая sad.gif
Может у кого есть пример кода для работы с Large PAGE?
Или хотелось бы понять в чём отличия для контроллера.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:43
Рейтинг@Mail.ru


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