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

 
 
> Прошивка программы в DDR3
electronik1979
сообщение Aug 2 2012, 07:28
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Есть отладка с kintex7 kc705. Написал простенькую программу на си мигания светодиода и вывода надписи через rs232. Если прошиваю эту программу в брам все работает, если в настройках линкер скрипта указываю ддр3 то после прошивки программа не работает. Версия ise 13_4. Помогите, что я не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Opex
сообщение Aug 2 2012, 11:22
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Внешняя память, вообще, работает? Проверяли каким-нибудь мемтестом?
Go to the top of the page
 
+Quote Post
Apast
сообщение Aug 2 2012, 12:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 22-06-04
Из: Новосибирск
Пользователь №: 87



Цитата(electronik1979 @ Aug 2 2012, 10:28) *
Есть отладка с kintex7 kc705. Написал простенькую программу на си мигания светодиода и вывода надписи через rs232. Если прошиваю эту программу в брам все работает, если в настройках линкер скрипта указываю ддр3 то после прошивки программа не работает. Версия ise 13_4. Помогите, что я не так делаю?


А как она туда попадет. Это надо загрузчик который вычитает программу из (загрузочной памяти, флаш и пр.) и загрузит ее в ДДР, а затем передаст управление туда.
С брам проще программа там гразиться вместе с прошивкой, т.е. она находится в прошивке.
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 2 2012, 13:33
Сообщение #4





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



А разве через XMD консоль программа не может быть загружена прямо в ддр?
Go to the top of the page
 
+Quote Post
Alex77
сообщение Aug 2 2012, 13:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(electronik1979 @ Aug 2 2012, 16:33) *
А разве через XMD консоль программа не может быть загружена прямо в ддр?

временно - да. (проверено на edk 12.4)
Но автор задал вопрос без объяснений что ему надо.
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 2 2012, 14:27
Сообщение #6





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Извините, не уточнил, пробую разбираться с отладочной платой, пишу простые программы и гружу через xmd консоль прямо из SDK. Может какие-нибудь настройки забыл указать, кроме линкер скрипта. Аппаратная платформа взята готовая в EDK просто выбрал отладочную кс705.
Go to the top of the page
 
+Quote Post
Flood
сообщение Aug 2 2012, 17:25
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871



Вообще, после загрузки программы в DDR через XMD работать она должна. Стоит проверить, что:
- DDR доступна (пишется/читается в XMD, причем читается то, что туда записали);
- процессор (microblaze?) имеет доступ к DDR на исполнение (есть доступ через порт IC, диапазон разрешен для работы кэша программ);
- линкер компонует программу в нужные адреса.

Кстати, вместо простых программ мигания светодиодом можно всунуть в BRAM целый u-boot - дела пойдут значительно веселее.
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 3 2012, 08:00
Сообщение #8





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Цитата(Opex @ Aug 2 2012, 15:22) *
Внешняя память, вообще, работает? Проверяли каким-нибудь мемтестом?

Сегодня проверил, в тесте память работает

В консоли выдается такое при загрузке и запуске из ддр3

XMD% connect mb mdm

JTAG chain configuration
--------------------------------------------------
Device ID Code IR Length Part Name
1 33651093 6 XC7K325T

MicroBlaze Processor Configuration :
-------------------------------------
Version............................8.20.b
Optimization.......................Performance
Interconnect.......................AXI-LE
MMU Type...........................No_MMU
No of PC Breakpoints...............1
No of Read Addr/Data Watchpoints...0
No of Write Addr/Data Watchpoints..0
Instruction Cache Support..........on
Instruction Cache Base Address.....0xc0000000
Instruction Cache High Address.....0xc7ffffff
Data Cache Support.................on
Data Cache Base Address............0xc0000000
Data Cache High Address............0xc7ffffff
Exceptions Support................off
FPU Support.......................off
Hard Divider Support...............off
Hard Multiplier Support............on - (Mul32)
Barrel Shifter Support.............on
MSR clr/set Instruction Support....on
Compare Instruction Support........on
Data Cache Write-back Support......off
Fault Tolerance Support............off
Stack Protection Support...........off

Connected to "mb" target. id = 0
Starting GDB server for "mb" target (id = 0) at TCP port no 1235
XMD% dow empty_cpp_0/debug/empty_cpp_0.elf
Downloading Program -- empty_cpp_0/debug/empty_cpp_0.elf
section, .vectors.reset: 0x00000000-0x00000007
section, .vectors.sw_exception: 0x00000008-0x0000000f
section, .vectors.interrupt: 0x00000010-0x00000017
section, .vectors.hw_exception: 0x00000020-0x00000027
section, .text: 0xc0000000-0xc0000ecb
section, .init: 0xc0000ecc-0xc0000f07
section, .fini: 0xc0000f08-0xc0000f23
section, .ctors: 0xc0000f24-0xc0000f2b
section, .dtors: 0xc0000f2c-0xc0000f33
section, .rodata: 0xc0000f34-0xc0001331
section, .sdata2: 0xc0001332-0xc0001337
section, .data: 0xc0001338-0xc0001473
section, .eh_frame: 0xc0001474-0xc0001477
section, .jcr: 0xc0001478-0xc000147b
section, .bss: 0xc0001480-0xc00014a3
section, .heap: 0xc00014a4-0xc00018a7
section, .stack: 0xc00018a8-0xc0001ca7
Setting PC with Program Start Address 0x00000000
System Reset .... DONE

XMD% run

RUNNING> 0
XMD% state
--------------------------------------------------------
System(1) - Hardware System on FPGA(Device 1) Targets:
--------------------------------------------------------
Blocked on Mem Instr Target(0) - MicroBlaze(1) Debug Target*


XMD%
XMD% rst
System reset successfully

0
XMD% run
ERROR: Debug Operation Not Supported on the Target
MicroBlaze Pipeline Stalled on a Blocking Instruction or Invalid Bus Access
Stalled PC: 0x00000008
Try Resetting the Processor to Continue..



Сообщение отредактировал electronik1979 - Aug 3 2012, 07:44
Go to the top of the page
 
+Quote Post
fox12
сообщение Aug 3 2012, 15:14
Сообщение #9





Группа: Участник
Сообщений: 11
Регистрация: 25-02-09
Пользователь №: 45 365



electronik1979, исходя из того что Вы представили:

Цитата
section, .vectors.reset: 0x00000000-0x00000007
section, .vectors.sw_exception: 0x00000008-0x0000000f
section, .vectors.interrupt: 0x00000010-0x00000017
section, .vectors.hw_exception: 0x00000020-0x00000027

и
Цитата
section, .text: 0xc0000000-0xc0000ecb


Вам следует указать в lscript.ld адреса векторов сброса, прерывания
и обработчиков исключений, так что-бы они располагались не в BRAM (0x00000000),
а начиная с 0xС0000000 (там где адресуется ваша DDR3).

Цитата
SECTIONS
{
.vectors.reset 0xС0000000 : {
*(.vectors.reset)
}

.vectors.sw_exception 0xС0000008 : {
*(.vectors.sw_exception)
}

.vectors.interrupt 0xС0000010 : {
*(.vectors.interrupt)
}

.vectors.hw_exception 0xС0000020 : {
*(.vectors.hw_exception)
}
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 6 2012, 03:56
Сообщение #10





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Цитата(fox12 @ Aug 3 2012, 19:14) *
electronik1979, исходя из того что Вы представили:


и

Вам следует указать в lscript.ld адреса векторов сброса, прерывания
и обработчиков исключений, так что-бы они располагались не в BRAM (0x00000000),
а начиная с 0xС0000000 (там где адресуется ваша DDR3).


А не подскажете, где можно поменять эти параметры, в линкер скрипте что-то не получается

Цитата(fox12 @ Aug 3 2012, 19:14) *
electronik1979, исходя из того что Вы представили:


и

Вам следует указать в lscript.ld адреса векторов сброса, прерывания
и обработчиков исключений, так что-бы они располагались не в BRAM (0x00000000),
а начиная с 0xС0000000 (там где адресуется ваша DDR3).


А не подскажете, где можно поменять эти параметры, в линкер скрипте что-то не получается.
Вы уверены что эти адреса надо менять, у меняесть пример xapp472 так там программа храниться в ддр3 а адреса этих секций такие же

Сообщение отредактировал electronik1979 - Aug 6 2012, 04:00
Go to the top of the page
 
+Quote Post
Alex77
сообщение Aug 6 2012, 05:40
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(fox12 @ Aug 3 2012, 18:14) *
electronik1979, исходя из того что Вы представили:


и

Вам следует указать в lscript.ld адреса векторов сброса, прерывания
и обработчиков исключений, так что-бы они располагались не в BRAM (0x00000000),
а начиная с 0xС0000000 (там где адресуется ваша DDR3).

Этого совершенно не надо делать.
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 6 2012, 07:11
Сообщение #12





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Добавил в проект файлы platform.c и platform.h и программа стала запускаться, при выполнении по шагам в консоли почему-то указывается одна и та же команда add r0 , r0 , r0 . Что это может значить?

XMD% stp
C0000074: 00000070 add r0 , r0 , r0

XMD% stp
C0000078: 00000078 add r0 , r0 , r0

XMD% stp
C000007C: 00000078 add r0 , r0 , r0

XMD% stp 2
C0000084: 00000080 add r0 , r0 , r0

XMD% stp
C0000088: 00000088 add r0 , r0 , r0
Go to the top of the page
 
+Quote Post
electronik1979
сообщение Aug 9 2012, 04:45
Сообщение #13





Группа: Участник
Сообщений: 12
Регистрация: 16-02-12
Пользователь №: 70 292



Спасибо всем за ответы, я толком не разобрался в чем была проблема, но взяв новую аппаратную платформу от примера kc705_bist программа стала запускаться из ДДР.
Go to the top of the page
 
+Quote Post

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

 


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


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