www.ejtag.ru

Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)


Расширенный поиск
Текущее время: 08 дек 2016, 01:16

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Добавление ECC к исходному дампу.
СообщениеДобавлено: 05 дек 2015, 19:50 
Не в сети

Зарегистрирован: 23 янв 2015, 23:49
Сообщения: 17
Страна: Russia (ru)
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Новичек
Всем привет, как известно для NAND флешей нужно еще и дописывать ECC область, кажется я столкнулся с такой ситуацией, пытаясь запустит U-BOOT
В самом NAND Tiny Tools, что то с работой ECC имеется..... Нужно к образу u-boot.noxip.bin размером 179172 байта, посчитать и дописать это ECC Данные по методу BCH 8 bit

Сама флешь такая:
PageSize = 2048 byte, blk_size = 131072, chip_size = 256 Mbyte, bus = 0, chips = 1
Using this parameters:
Page Size = 2048 byte
Spare Size = 64 byte
Общий размер = 256 Mbyte
Кол-во адресных циклов = 5

Возможно ли такое реализовать при запиши оригинального дампа без ECC, дописывать в страницу ЕСС ? или это уже реализовано ?

PS: ECC какое нужно
NAND ECC algorithm selection
NAND flash memory, although cheap, suffers from problems like bit flipping which lead to data corruption. However by making use of some error correction coding (ECC) techniques it is possible to workaround this problem.

For the data stored in NAND flash, U-Boot supports following NAND ECC schemes

S/W ECC (Hamming code)
H/W ECC (Hamming code, BCH4, BCH8, BCH16)
NOTE: Current releases do not support BCH4 and BCH16.

BCH Flash OOB Layout
For any ECC scheme we need to add some extra data while writing so as to detect and correct (if possible) the errors introduced by the NAND part. In case of BCH scheme some bytes are needed to store the ECC related info.

The section of NAND memory where addition info like ECC data is stored is referred to as Out Of Band or OOB section.

The first 2 bytes are used for Bad block marker – 0xFFFF => Good block

The next ‘N’ bytes is used for BCH bytes

N = B * <Number of 512-byte sectors in a page>

B = 8 bytes per 512 byte sector in BCH4
B = 14 bytes per 512 byte sector in BCH8
B = 26 bytes per 512 byte sector in BCH16
So for a 2k page-size NAND flash with 64-byte OOB size, we will use BCH8. This will consume 2 + (14*4) = 58 bytes out of 64 bytes available.

The NAND flash part used in EVM does not have enough spare area to support BCH16.

ECC Schemes and their context of usage
ECC type Usage
S/W ECC Not used
H/W ECC - Hamming Code Use this for flashing any image/binary which will be used by Linux. This scheme is also used for by the U-Boot ENV variables.
H/W ECC – BCH8 Only while flashing U-Boot from U-Boot. After flashing U-Boot revert back to hamming code h/w ecc

To select ECC algorithm for NAND:

TI8168_EVM# nandecc [sw | hw <hw_type>]

Usage:

sw - Set software ECC for NAND
hw <hw_type> - Set hardware ECC for NAND
<hw_type> - 0 for Hamming code
1 for bch4
2 for bch8
3 for bch16
Currently we support only Software, Hamming Code and BCH8. We do not support BCH4 and BCH16
Transferring images to NAND via U-Boot
Note
When updating any partition in NAND, please erase the complete partition and not just the space needed by the image which will be transferred onto NAND
Make sure the EVM is connected to network. This is required to get Linux Image from a tftp server. If there is no DHCPserver in the network then use static ip. The section on U-Boot network configuration gives commands for doing this.

Make sure tftp server is running in a windows PC and the home directory for the tftp server has Linux kernel uImage. This windows PC should be accessible from the EVM.

Flashing U-Boot from U-Boot
To flash u-boot image (u-boot.noxip.bin) to NAND execute the commands listed below:

TI8168_EVM# mw.b 0x81000000 0xFF 0x260000
TI8168_EVM# tftp 0x81000000 u-boot.noxip.bin
TI8168_EVM# nand erase 0x0 0x260000 <=== Erasing the whole partition before flashing the image
TI8168_EVM# nandecc hw 2
TI8168_EVM# nand write.i 0x81000000 0x0 0x260000
TI8168_EVM# nandecc hw 0


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2015, 20:25 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Реализовать расчёт ECC возможно, если есть алгоритм (исходник).
На практике кроме знания типа алгоритма(BCHx) нужен еще полином, а его обычно нигде не пишут. К тому же кроме самого ЕСС в спарэ может лежать дополнительная информация, расположение и назначение которой тоже нужно знать. И как последний гвоздь в крышечку - в одном дампе могут использоваться разные ЕСС - для лоадера один, для файловой другой и т.д, что еще более усложняет работу с ЕСС в ПО (не будет никогда универсального варианта).


Вернуться к началу
 Профиль Фотоальбом  
 
СообщениеДобавлено: 05 дек 2015, 20:42 
Не в сети

Зарегистрирован: 23 янв 2015, 23:49
Сообщения: 17
Страна: Russia (ru)
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Новичек
sergiuss писал(а):
Реализовать расчёт ECC возможно, если есть алгоритм (исходник).
На практике кроме знания типа алгоритма(BCHx) нужен еще полином, а его обычно нигде не пишут. К тому же кроме самого ЕСС в спарэ может лежать дополнительная информация, расположение и назначение которой тоже нужно знать. И как последний гвоздь в крышечку - в одном дампе могут использоваться разные ЕСС - для лоадера один, для файловой другой и т.д, что еще более усложняет работу с ЕСС в ПО (не будет никогда универсального варианта).


Ну что они разные это как раз видно что под сполером...
для U-boot включается BCH8, потом для всего остального hamming

Flashing U-Boot from U-Boot
To flash u-boot image (u-boot.noxip.bin) to NAND execute the commands listed below:

TI8168_EVM# mw.b 0x81000000 0xFF 0x260000
TI8168_EVM# tftp 0x81000000 u-boot.noxip.bin
TI8168_EVM# nand erase 0x0 0x260000 <=== Erasing the whole partition before flashing the image
TI8168_EVM# nandecc hw 2
TI8168_EVM# nand write.i 0x81000000 0x0 0x260000
TI8168_EVM# nandecc hw 0

где
hw <hw_type> - Set hardware ECC for NAND
<hw_type> - 0 for Hamming code
1 for bch4
2 for bch8
3 for bch16

Но пока интересно запустить U-boot, Дальше уже ком корт и всё аппаратно...


PS: нашел на формах TI... лог как их софтина CCS Nand Flash Utility это делает.. попробую найти её и что нибудь придумать.. мож повезет. :) чтоб получить дамп с ецц

лог:
[CortexA8] Welcome to CCS Nand Flash Utility


Choose your operation
Enter 1 ---> To Flash an Image
Enter 2 ---> To ERASE the whole NAND
Enter 3 ---> To EXIT
1
Enter image file path
D:\CCS_DM8168\u-boot.noxip.bin
Enter offset (in hex):
0
Choose the ECC scheme from given options :
Enter 1 ---> BCH 8-bit
Enter 2 ---> HAM
Enter 3 ---> T0 EXIT
Please enter ECC scheme type :
1
Starting NETRA NAND writerbus with 16


----------------------
NAND FLASH DETAILS
----------------------
Device ID : 0xc3
Manufacture ID : 0x2c
Page Size : 4096 Bytes
Spare Size : 224 Bytes
Pages_Per_Block : 64
Number_of_Blocks : 4096
Device_width : 2 Byte
DeviceSize : 1024 MB

Setting the ECC scheme
Set the BCH 8 bit ECC scheme .... done
Preparing to Flash image ....
Opening image ... done.

Erasing Required Blocks [start = 0, count = 1]...Done
Flashing image ...
Number of blocks needed for header and data: 0x1
Attempting to start write in block number 0x0.
Writing image data to Block 0 Page0x0
Writing image data to Block 0 Page0x1
Writing image data to Block 0 Page0x2
Writing image data to Block 0 Page0x3
Writing image data to Block 0 Page0x4
Writing image data to Block 0 Page0x5
Writing image data to Block 0 Page0x6
Writing image data to Block 0 Page0x7
Writing image data to Block 0 Page0x8
Writing image data to Block 0 Page0x9
Writing image data to Block 0 Page0xa
Writing image data to Block 0 Page0xb
Writing image data to Block 0 Page0xc
Writing image data to Block 0 Page0xd
Writing image data to Block 0 Page0xe
Writing image data to Block 0 Page0xf
Writing image data to Block 0 Page0x10
Writing image data to Block 0 Page0x11
Writing image data to Block 0 Page0x12
Writing image data to Block 0 Page0x13
Writing image data to Block 0 Page0x14
Writing image data to Block 0 Page0x15
Writing image data to Block 0 Page0x16
Writing image data to Block 0 Page0x17
Writing image data to Block 0 Page0x18
Writing image data to Block 0 Page0x19
Writing image data to Block 0 Page0x1a
Writing image data to Block 0 Page0x1b
Writing image data to Block 0 Page0x1c
Writing image data to Block 0 Page0x1d
Writing image data to Block 0 Page0x1e
Writing image data to Block 0 Page0x1f
Writing image data to Block 0 Page0x20
Writing image data to Block 0 Page0x21
Writing image data to Block 0 Page0x22
Writing image data to Block 0 Page0x23
Writing image data to Block 0 Page0x24
Writing image data to Block 0 Page0x25
Writing image data to Block 0 Page0x26
Writing image data to Block 0 Page0x27
Writing image data to Block 0 Page0x28
Writing image data to Block 0 Page0x29
Writing image data to Block 0 Page0x2a
Writing image data to Block 0 Page0x2b
Writing image data to Block 0 Page0x2c
Writing image data to Block 0 Page0x2d
Writing image data to Block 0 Page0x2e
Writing image data to Block 0 Page0x2f
Writing image data to Block 0 Page0x30
Writing image data to Block 0 Page0x31
Writing image data to Block 0 Page0x32
Writing image data to Block 0 Page0x33
Image successfully flashed


NAND flashing successful!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2015, 21:18 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Не утилита это делает, нанд-контроллер рассчитывает ЕСС. Запускается она в озу устройства.
Не проще переключить на загрузку с карты и запустить u-boot?


Вернуться к началу
 Профиль Фотоальбом  
 
СообщениеДобавлено: 05 дек 2015, 21:34 
Не в сети

Зарегистрирован: 23 янв 2015, 23:49
Сообщения: 17
Страна: Russia (ru)
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Новичек
карты тут нету... только НАНД, 3 USB и 2 ГигаЛана, Jtag без маркировки... но чую толку от него... Проц ti8168 на ядре Cortex A8, ну еше два ком порта на плате, но на них тишина сейчас.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 7 часов


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

Сейчас этот форум просматривают: 700PRO (firefox), Sashkas (chrome) и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group (блог о phpBB)
Русская поддержка phpBB
phpBB Shop