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

 
 
> Портирование кода с ПК на ARM926
Harvester
сообщение Oct 5 2014, 05:53
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Добрый день.
Имеется библиотека (криптография) которая писалась и отлаживалась на ПК в Visual C++. Нужно перенести получившийся код на процессор ARM926EJ-S. На что нужно (и можно) обратить внимание?
К сожалению, тупо вставить, ничего не меняя, не получилось - код компилируется, но система после запуска вылетает в Fatal Error (конкретное исключение вроде бы MisAligned, но не уверен). Ну а поскольку в коде так и так придется ковыряться, хотелось бы по максимуму ускорить его выполнение.


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Oct 5 2014, 09:08
Сообщение #2


Ally
******

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



Цитата(Harvester @ Oct 5 2014, 08:53) *
На что нужно (и можно) обратить внимание?


Если есть стабильное исключение, то установить где оно происходит с помощью JTAG дело пяти минут.
Обратите внимание на JTAG wink.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 5 2014, 15:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Oct 5 2014, 15:08) *
Если есть стабильное исключение, то установить где оно происходит с помощью JTAG дело пяти минут.

И??... Установили что оно происходит к примеру в диапазоне адресов: 0x00000000...0xFFFFFFFF (каждый раз - в новом месте). Что дальше?
Как догадаться, что оно происходит к примеру: из-за переполнения/разрушения стека, после которого происходит POP {PC} в случайный адрес,
далее несколько тыс. команд CPU бродит по случайным адресам, пока не натыкается на нечто, вызывающее это исключение? laughing.gif

Хотя с определённой долей вероятности можно предположить, что у ТС всё проще. И раз код писали люди, не понимающие чем грозит *(int *)0x00000001
на CPU типа ARM9, то возможно что адрес исключения укажет на одну из точек бага.
Только начинать всё равно нужно с изучения мануала на CPU.

Цитата(kovigor @ Oct 5 2014, 16:33) *
Не забудьте включить MMU, Instruction cache и Data cache, иначе выйдет не криптография, а сплошные тормоза.

Не очень понятно, как MMU повлияет на быстродействие...
Раскройте секрет. sm.gif

Цитата(Harvester @ Oct 5 2014, 20:23) *
Само устройство - 3G-модем. Соответственно, объем Firmware очень большой (исходников под 2 гига), само ПО - многоуровневое и многоступенчатое sm.gif, поэтому в "потроха" процессора я лезть не могу и не хочу.

Странный вывод.... wacko.gif
Т.е. - если-бы ПО было простое - полезли-бы? Вы считаете, что сложность внутреннего устройства CPU увеличивается при усложнении ПО на нём выполняющегося???
Т.е. - в простом ПО типа HelloWorld в CPU имеется скажем всего 4 РОН, но при увеличении размера кода до 1гига - кол-во регистров может увеличиться до 256??? biggrin.gif
Go to the top of the page
 
+Quote Post
SII
сообщение Oct 6 2014, 15:07
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Цитата(jcxz @ Oct 5 2014, 19:34) *
Не очень понятно, как MMU повлияет на быстродействие...
Раскройте секрет. sm.gif


Причина в том, что во многих АРМовских процессорных ядрах, в том числе на ARM926, кэш данных может работать только при включённом MMU. Соответственно, если MMU выключено, кэш данных не работает и любое обращение к памяти реально обращается к памяти sm.gif А это, понятное дело, -- большие задержки. Поэтому, даже если виртуальная память совершенно не нужна, крайне рекомендуется включать MMU, заполнив переадресации таким образом, чтобы виртуальные адреса просто совпадали с физическими, а защита не использовалась.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 6 2014, 17:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(SII @ Oct 6 2014, 21:07) *
Причина в том, что во многих АРМовских процессорных ядрах, в том числе на ARM926, кэш данных может работать только при включённом MMU. Соответственно, если MMU выключено, кэш данных не работает и любое обращение к памяти реально обращается к памяти sm.gif А это, понятное дело, -- большие задержки. Поэтому, даже если виртуальная память совершенно не нужна, крайне рекомендуется включать MMU, заполнив переадресации таким образом, чтобы виртуальные адреса просто совпадали с физическими, а защита не использовалась.

Да, пожалуй Вы правы:
Открываем TRM на ARM926EJ-S раздел "Caches and Write Buffer":
Table 4-3 CP15 c1 C and M bit settings for the DCache
C bit/M bit____ARM926EJ-S behavior
...
1/0______DCache enabled, MMU disabled. The C bit is overridden by the M bit setting, so that the DCache is
_________effectively disabled. All data accesses are noncacheable, nonbufferable, with no protection checks. All
_________addresses are flat mapped, that is VA = MVA = PA.
...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Harvester   Портирование кода с ПК на ARM926   Oct 5 2014, 05:53
- - Виктория   Для ARM используется gcc?   Oct 5 2014, 08:32
- - jcxz   Цитата(Harvester @ Oct 5 2014, 11:53) Име...   Oct 5 2014, 08:44
- - Виктория   Размерности по типам данных в обоих компиляторах с...   Oct 5 2014, 09:07
- - kovigor   Цитата(Harvester @ Oct 5 2014, 08:53) ......   Oct 5 2014, 10:33
- - Lagman   Вангую, на 100% это все крутится под линукс.   Oct 5 2014, 11:13
|- - AlexandrY   Цитата(Lagman @ Oct 5 2014, 14:13) Вангую...   Oct 5 2014, 12:04
|- - Harvester   Цитата(AlexandrY @ Oct 5 2014, 16:04) Кто...   Oct 5 2014, 14:23
|- - AlexandrY   Цитата(Harvester @ Oct 5 2014, 17:23) На ...   Oct 5 2014, 17:44
|- - Harvester   Цитата(AlexandrY @ Oct 5 2014, 21:44) Да,...   Oct 6 2014, 10:04
|- - AlexandrY   Цитата(Harvester @ Oct 6 2014, 13:04) Ну,...   Oct 6 2014, 10:26
|- - Harvester   Цитата(AlexandrY @ Oct 6 2014, 14:26) А к...   Oct 6 2014, 10:51
|- - AlexandrY   Цитата(Harvester @ Oct 6 2014, 13:51) Я р...   Oct 6 2014, 11:49
|- - Harvester   Цитата(AlexandrY @ Oct 6 2014, 15:49) А к...   Oct 6 2014, 13:19
|- - kovigor   Цитата(Harvester @ Oct 6 2014, 16:19) Воб...   Oct 6 2014, 13:35
|- - Harvester   Цитата(kovigor @ Oct 6 2014, 17:35) Прост...   Oct 6 2014, 13:52
|- - AlexandrY   Цитата(kovigor @ Oct 6 2014, 16:35) Прост...   Oct 6 2014, 14:13
|- - Harvester   Цитата(AlexandrY @ Oct 6 2014, 18:13) Ари...   Oct 6 2014, 14:28
- - Виктория   Цитата(Harvester @ Oct 5 2014, 08:53) Име...   Oct 5 2014, 17:31
|- - jcxz   Цитата(Виктория @ Oct 5 2014, 23:31) Отла...   Oct 5 2014, 20:31
- - Genadi Zawidowski   Вам сказали ЦитатаНумерация байтов и бит в слове В...   Oct 6 2014, 15:29


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:13
Рейтинг@Mail.ru


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