Перейти к содержанию
    

CCS 4 Си

Проблема такая: при прямой инициализации массива, длиной 256 long, на Си, CCS просто не записывает числа в память данных. Что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит "не записывает CCS"? Вы заполняете массив через JTAG в отладчике?

Или всё-таки - не записывает CPU в программе?

Если 2-е - покажите сюда соответствующий участок листинга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит "не записывает CCS"? Вы заполняете массив через JTAG в отладчике?

Или всё-таки - не записывает CPU в программе?

Если 2-е - покажите сюда соответствующий участок листинга.

 

вот код си: с самого начала. тело проги убрала потому что в начале уже если смотреть watch он отображает нули

 

 

long ssss[256]= {

6588387, 19764913, 32940695, 46115236,

59288042, 72458615, 85626460, 98791081,

111951983, 125108670, 138260647, 151407418,

164548489, 177683365, 190811551, 203932553,

217045877, 230151030, 243247517, 256334847,

269412525, 282480061, 295536961, 308582734,

321616889, 334638936, 347648383, 360644742,

373627523, 386596237, 399550396, 412489512,

425413098, 438320667, 451211734, 464085813,

476942419, 489781069, 502601279, 515402566,

528184448, 540946445, 553688076, 566408860,

579108319, 591785976, 604441351, 617073970,

629683357, 642269036, 654830534, 667367379,

679879097, 692365218, 704825272, 717258790,

729665303, 742044345, 754395449, 766718151,

779011986, 791276492, 803511207, 815715670,

827889421, 840032003, 852142959, 864221832,

876268167, 888281511, 900261412, 912207419,

924119082, 935995952, 947837582, 959643527,

971413341, 983146583, 994842809, 1006501581,

1018122458, 1029705003, 1041248781, 1052753356,

1064218296, 1075643168, 1087027543, 1098370992,

1109673088, 1120933406, 1132151521, 1143327011,

1154459455, 1165548435, 1176593532, 1187594332,

1198550419, 1209461381, 1220326808, 1231146290,

1241919421, 1252645793, 1263325005, 1273956652,

1284540337, 1295075658, 1305562221, 1315999631,

1326387493, 1336725418, 1347013016, 1357249900,

1367435684, 1377569985, 1387652421, 1397682613,

1407660183, 1417584755, 1427455956, 1437273414,

1447036759, 1456745625, 1466399644, 1475998455,

1485541695, 1495029005, 1504460029, 1513834410,

1523151796, 1532411836, 1541614182, 1550758488,

1559844407, 1568871600, 1577839726, 1586748446,

1595597427, 1604386334, 1613114837, 1621782607,

1630389318, 1638934646, 1647418268, 1655839867,

1664199124, 1672495724, 1680729357, 1688899710,

1697006478, 1705049354, 1713028036, 1720942224,

1728791619, 1736575926, 1744294852, 1751948106,

1759535401, 1767056449, 1774510970, 1781898680,

1789219304, 1796472564, 1803658188, 1810775906,

1817825448, 1824806551, 1831718951, 1838562387,

1845336603, 1852041343, 1858676354, 1865241387,

1871736195, 1878160534, 1884514160, 1890796836,

1897008324, 1903148391, 1909216806, 1915213339,

1921137766, 1926989863, 1932769410, 1938476189,

1944109986, 1949670588, 1955157787, 1960571374,

1965911147, 1971176905, 1976368449, 1981485584,

1986528117, 1991495859, 1996388621, 2001206221,

2005948477, 2010615209, 2015206244, 2019721407,

2024160528, 2028523441, 2032809981, 2037019987,

2041153301, 2045209766, 2049189230, 2053091543,

2056916559, 2060664132, 2064334123, 2067926393,

2071440807, 2074877232, 2078235539, 2081515602,

2084717297, 2087840504, 2090885104, 2093850984,

2096738031, 2099546138, 2102275198, 2104925108,

2107495769, 2109987084, 2112398959, 2114731304,

2116984030, 2119157053, 2121250291, 2123263665,

2125197099, 2127050521, 2128823861, 2130517051,

2132130029, 2133662733, 2135115106, 2136487094,

2137778643, 2138989707, 2140120239, 2141170196,

2142139540, 2143028233, 2143836243, 2144563538,

2145210091, 2145775879, 2146260880, 2146665075,

2146988449, 2147230990, 2147392689, 2147473541

};

 

int aaa( long* inarray, int N, int ph, int fr, int ampl)

{

int cur_ph, fin_ph, n;

*************

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну значит всё-таки JTAG.... И похоже что у вас проблемы с загрузкой программы JTAG-ом в CPU. Либо в компиляции.

Я же говорил - "листинг", а листинг - это не исходник :)

Посмотрите по map-файлу куда у вас этот массив попадает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну значит всё-таки JTAG.... И похоже что у вас проблемы с загрузкой программы JTAG-ом в CPU. Либо в компиляции.

Я же говорил - "листинг", а листинг - это не исходник :)

Посмотрите по map-файлу куда у вас этот массив попадает

 

по адресу 0xa0e, там отображаются нули

 

листинг-это же код программы, не?))что тогда?

 

.text, __text, ksu_singen:

0x0023C8: 4ef7 AADD #-9,SP

0x0023CA: ca0a MOV AR2,*SP(#05h)

0x0023CC: c908 MOV AR1,*SP(#04h)

0x0023CE: c506 MOV T1,*SP(#03h)

0x0023D0: c404 MOV T0,*SP(#02h)

0x0023D2: eb0085 MOV XAR0,dbl(*SP(#00h))

0x0023D5: a906 MOV *SP(#03h),AR1

0x0023D7: c90e MOV AR1,*SP(#07h)

0x0023D9: e61000 MOV #0,*SP(#08h)

0x0023DC: aa10 MOV *SP(#08h),AR2

0x0023DE: a904 MOV *SP(#02h),AR1

0x0023E0: 12a890 CMP AR2 >= AR1, TC1

0x0023E3: 6d6400fe BCC C$DW$L$_ksu_singen$12$E,TC1

C$DW$L$_ksu_singen$2$B, C$L1:

0x0023E7: a908 MOV *SP(#04h),AR1

0x0023E9: d60e99 ADD *SP(#07h),AR1,AR1

0x0023EC: 7d03ff09 AND #1023,AR1,AC0

0x0023F0: c00c MOV AC0,*SP(#06h)

0x0023F2: 2209 MOV AC0,AR1

0x0023F4: c90e MOV AR1,*SP(#07h)

0x0023F6: 760100a8 MOV #256,AR2

0x0023FA: a90c MOV *SP(#06h),AR1

0x0023FC: 1298a0 CMP AR1 >= AR2, TC1

0x0023FF: 046420 BCC C$DW$L$_ksu_singen$3$E,TC1

C$DW$L$_ksu_singen$3$B, C$DW$L$_ksu_singen$2$E:

0x002402: 7a00000a MOV #0 << #16,AC0

0x002406: a10c MOV *SP(#06h),AC1

0x002408: ed00bf MOV dbl(*SP(#00h)),XAR3

0x00240B: 7e0a0e00 OR #2574,AC0,AC0

0x00240F: 5010 SFTL AC1,#1

0x002411: 90b2 MOV XAR3,AC2

0x002413: 2410 ADD AC1,AC0

0x002415: 900b MOV AC0,XAR3

0x002417: a110 MOV *SP(#08h),AC1

0x002419: 5010 SFTL AC1,#1

0x00241B: 2421 ADD AC2,AC1

0x00241D: 901a MOV AC1,XAR2

0x00241F: 806100 MOV dbl(*AR3),dbl(*AR2)

C$DW$L$_ksu_singen$4$B, C$L2, C$DW$L$_ksu_singen$3$E:

0x002422: 760100a8 MOV #256,AR2

0x002426: a90c MOV *SP(#06h),AR1

0x002428: 1294a0 CMP AR1 < AR2, TC1

0x00242B: 046433 BCC C$DW$L$_ksu_singen$6$E,TC1

C$DW$L$_ksu_singen$5$B, C$DW$L$_ksu_singen$4$E:

0x00242E: 760200a8 MOV #512,AR2

0x002432: 1298a0 CMP AR1 >= AR2, TC1

0x002435: 046429 BCC C$DW$L$_ksu_singen$6$E,TC1

C$DW$L$_ksu_singen$6$B, C$DW$L$_ksu_singen$5$E:

0x002438: 76020098 MOV #512,AR1

0x00243C: d70c99 SUB *SP(#06h),AR1,AR1

0x00243F: c90c MOV AR1,*SP(#06h)

0x002441: 7a00000a MOV #0 << #16,AC0

0x002445: a10c MOV *SP(#06h),AC1

0x002447: ed00bf MOV dbl(*SP(#00h)),XAR3

0x00244A: 7e0a0e00 OR #2574,AC0,AC0

0x00244E: 5010 SFTL AC1,#1

0x002450: 90b2 MOV XAR3,AC2

0x002452: 2410 ADD AC1,AC0

0x002454: 900b MOV AC0,XAR3

0x002456: a110 MOV *SP(#08h),AC1

0x002458: 5010 SFTL AC1,#1

0x00245A: 2421 ADD AC2,AC1

0x00245C: 901a MOV AC1,XAR2

0x00245E: 806100 MOV dbl(*AR3),dbl(*AR2)

C$DW$L$_ksu_singen$7$B, C$L3, C$DW$L$_ksu_singen$6$E:

0x002461: 760200a8 MOV #512,AR2

0x002465: a90c MOV *SP(#06h),AR1

0x002467: 1294a0 CMP AR1 < AR2, TC1

0x00246A: 04642f BCC C$DW$L$_ksu_singen$9$E,TC1

C$DW$L$_ksu_singen$8$B, C$DW$L$_ksu_singen$7$E:

0x00246D: 760300a8 MOV #768,AR2

0x002471: 1298a0 CMP AR1 >= AR2, TC1

0x002474: 046425 BCC C$DW$L$_ksu_singen$9$E,TC1

C$DW$L$_ksu_singen$9$B, C$DW$L$_ksu_singen$8$E:

0x002477: 7a00000a MOV #0 << #16,AC0

0x00247B: a10c MOV *SP(#06h),AC1

0x00247D: 7e0a0e00 OR #2574,AC0,AC0

0x002481: 5010 SFTL AC1,#1

0x002483: 2410 ADD AC1,AC0

0x002485: 900b MOV AC0,XAR3

0x002487: ed6108 MOV dbl(*AR3),AC0

0x00248A: ed00bf MOV dbl(*SP(#00h)),XAR3

0x00248D: a010_3502 MOV *SP(#08h),AC0 || NEG AC0,AC2

0x002491: 5000 SFTL AC0,#1

0x002493: 90b1 MOV XAR3,AC1

0x002495: 2410 ADD AC1,AC0

0x002497: 900b MOV AC0,XAR3

0x002499: eb6128 MOV AC2,dbl(*AR3)

C$DW$L$_ksu_singen$10$B, C$L4, C$DW$L$_ksu_singen$9$E:

0x00249C: 760300a8 MOV #768,AR2

0x0024A0: a90c MOV *SP(#06h),AR1

0x0024A2: 1294a0 CMP AR1 < AR2, TC1

0x0024A5: 04642e BCC C$DW$L$_ksu_singen$11$E,TC1

C$DW$L$_ksu_singen$11$B, C$DW$L$_ksu_singen$10$E:

0x0024A8: 76040098 MOV #1024,AR1

0x0024AC: d70c99 SUB *SP(#06h),AR1,AR1

0x0024AF: c90c MOV AR1,*SP(#06h)

0x0024B1: 7a00000a MOV #0 << #16,AC0

0x0024B5: a10c MOV *SP(#06h),AC1

0x0024B7: 7e0a0e00 OR #2574,AC0,AC0

0x0024BB: 5010 SFTL AC1,#1

0x0024BD: 2410 ADD AC1,AC0

0x0024BF: 900b MOV AC0,XAR3

0x0024C1: ed6108 MOV dbl(*AR3),AC0

0x0024C4: ed00bf MOV dbl(*SP(#00h)),XAR3

0x0024C7: a010_3502 MOV *SP(#08h),AC0 || NEG AC0,AC2

0x0024CB: 5000 SFTL AC0,#1

0x0024CD: 90b1 MOV XAR3,AC1

0x0024CF: 2410 ADD AC1,AC0

0x0024D1: 900b MOV AC0,XAR3

0x0024D3: eb6128 MOV AC2,dbl(*AR3)

C$DW$L$_ksu_singen$12$B, C$L5, C$DW$L$_ksu_singen$11$E:

0x0024D6: f7100001 ADD #1,*SP(#08h)

0x0024DA: a904 MOV *SP(#02h),AR1

0x0024DC: aa10 MOV *SP(#08h),AR2

0x0024DE: 12a490 CMP AR2 < AR1, TC1

0x0024E1: 6d64ff02 BCC C$L1,TC1

C$L6, C$DW$L$_ksu_singen$12$E:

0x0024E5: a40e MOV *SP(#07h),T0

0x0024E7: 4e09 AADD #9,SP

0x0024E9: 4804 RET

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну значит всё-таки JTAG.... И похоже что у вас проблемы с загрузкой программы JTAG-ом в CPU. Либо в компиляции.

Я же говорил - "листинг", а листинг - это не исходник :)

Посмотрите по map-файлу куда у вас этот массив попадает

 

вообще суть в том, что есть основная программа, в которой есть несколько задач (так же си-файлы). для каждой задачи есть место в стеке-ограниченное. для одной из задач требуется этот массив. как можно сделать так, чтобы он записывался=инициализировался не в стеке для этой задачи, а в общей памяти данных, т.к. стек для каждой из задач меньше и чтобы массив на стек не влиял и не урезал его)

 

Пример:

файл задача 1:

 

extern int fun( long*, int, int, int, int);

 

 

des dd;

int Stack1[128];

 

long in_x[1024];

 

task1(des* dd)

{

int p;

 

p=0;

 

while(1)

{fun( in_x, 1024, p, 1, 0);

}

}

 

 

Файл с функцией:

 

long ss[256]= { записываем 256 значений}; //строка записи массива

int fun( long* inarray, int N, int p, int fr, int ampl) //строка вызываемой функции

{

....

inarray[n] = ss[cur_ph];

....

}

 

 

В общих чертах так. Как мне кажется проблема в том, что из task1 сразу перепрыгивается на строку вызываемой функции, и при этом все, что записано до( строка записи массива) игнорируется. как сделать правильно не знаю(

Изменено пользователем sierra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по адресу 0xa0e, там отображаются нули

листинг-это же код программы, не?))что тогда?

Вообще-то расположение переменной или функции в памяти определяется не по листингу, а по map-файлу.

Ну если 0xa0e - далее берёте даташит на свой CPU и смотрите есть-ли по этим адресам память и какая.

 

...

В общих чертах так. Как мне кажется проблема в том, что из task1 сразу перепрыгивается на строку вызываемой функции, и при этом все, что записано до( строка записи массива) игнорируется. как сделать правильно не знаю(

Да... не думал что всё так печально... :crying:

Барышня, как правильно - вам надо найти книжку по си и читать-читать-читать....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то расположение переменной или функции в памяти определяется не по листингу, а по map-файлу.

Ну если 0xa0e - далее берёте даташит на свой CPU и смотрите есть-ли по этим адресам память и какая.

 

 

Да... не думал что всё так печально... :crying:

Барышня, как правильно - вам надо найти книжку по си и читать-читать-читать....

 

map пишет

 

0000020e _in_x

000023c8 _fun

00000a0e _ss

00002603 _task1

 

 

по даташиту к TMS C55xx Rev3.0 CPU Cycle Accurate Simulator:

Timer

Registers

0x1000

0x2400

McBSP

0x2800

0x2C00

0x3000

 

 

=)читать нужно всегда) насколько я знаю(=читала) такой массив Си должен записать в память после запуска. И во многих примерах видела именно подобную запись. Может в CCS4 это происходит по-другому...поэтому и спрашиваю.

 

Может здесь использовать запись массива в заданные ячейки памяти, возможно ли это в CCS? т.е. через

#pragma section("") ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забавная тема. У автора топика явно каша в голове. Еще и вопросы формируются так, чтобы эта каша стала у пытающихся понять суть проблемы... %)

 

Совет - вдумчиво почитайте про работу линкера, секции. Удачи.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть не в тему, но у меня подобное было из-за кеша.

Кеш просто не обновлялся правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забавная тема. У автора топика явно каша в голове. Еще и вопросы формируются так, чтобы эта каша стала у пытающихся понять суть проблемы... %)

 

Совет - вдумчиво почитайте про работу линкера, секции. Удачи.

 

Есть такое)

может ссылки скинете? почитаю. читаю что есть- отсюда каша и нерешенный вопрос

 

Может быть не в тему, но у меня подобное было из-за кеша.

Кеш просто не обновлялся правильно.

 

Как это исправить?(либо прочитать об этом)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может ссылки скинете?

Увы, у меня нет таких ссылок, чтобы раз - и стало всё понятно. Понимание приходит с опытом (моё кстати еще в пути :))... Хотя может у Вас будет по-другому - попробуйте найти у техаса какой-нибудь workshop на Ваше семейство процессоров (аля такое), может поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...