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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Infineon и Keil, Infineon XC167CL-16 bit и Keil uVision3 asm
Lalka
сообщение Aug 16 2009, 17:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D
Go to the top of the page
 
+Quote Post
Axel
сообщение Aug 17 2009, 06:26
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(Lalka @ Aug 16 2009, 21:48) *
...помогите!...


Куда помогать? (в смысле e-mail)...
Да, и еще - не про ARM это. Надо бы во "Все остальные ...".
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 17 2009, 13:20
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Lalka @ Aug 16 2009, 21:48) *
Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D

А зачем с ассемблером? Чужой код разгребать?
Вообще-то обычная практика - писать всё на Си и переделывать на ассемблере только те куски, которые на Си не получаются (обычно если не хватает скорости).
Кстати, для программирования на ассемблере Keil рекомендует скомпилировать исходник на Си с каркасами функций и переменными, получив на выходе компилятора файл на языке ассемблера. Потом править этот файл.
Ну а что касается литературы, то первоисточники - это C166S V2 Core User's Manual от Infineon и руководства от Keil.
Go to the top of the page
 
+Quote Post
Lalka
сообщение Aug 18 2009, 05:46
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



Потому что надо на ассемблере.
Еще, что такое [Rw]? Не могу понять как работает. Все время в памяти С0FA и новое число записать невозможно.И как записывать в память адресов большие числа? Больше FFFF не помещается,причем записывать в адрес можно только из регистра.Так задумано?
Как задать переменной конкретный адрес?
Go to the top of the page
 
+Quote Post
Shandy
сообщение Aug 18 2009, 06:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 3-03-06
Пользователь №: 14 931



Rw = это значит, что регистр 16-битный (word)
Чтобы разобраться с обозначениями, прочитайте описание системы команд (см. прикрепленный файл)
Возьмите за основу файл template.a66 из папки Keil\c166\asm. Он специально написан, чтобы использовать его как образец.
Прикрепленные файлы
Прикрепленный файл  C166_Instruction_Set.pdf ( 359.99 килобайт ) Кол-во скачиваний: 58
 
Go to the top of the page
 
+Quote Post
Axel
сообщение Aug 18 2009, 06:41
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(Lalka @ Aug 18 2009, 08:46) *
...как записывать в память адресов большие числа?


Почитайте про режимы адресации...

Цитата(Lalka @ Aug 18 2009, 08:46) *
...Как задать переменной конкретный адрес?


В сегменте данных директива "ORG".
Go to the top of the page
 
+Quote Post
Lalka
сообщение Sep 10 2009, 06:21
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



А как работать с массивами?
Я задаю массив:
?NC?HELLO SECTION DATA WORD 'NCONST'
MASS DW 11,22,33,44,...
?NC?HELLO ENDS

потом хочу брать эти числа по одному и записывать в регистр

MOV R1,MASS
MOV R2,MASS+2
MOV R3,MASS+4
...

Что можно взять вместо +2,+4... и инкрементировать?
Go to the top of the page
 
+Quote Post
Lalka
сообщение Oct 6 2009, 17:35
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



...сдалась и перешла на Си...
Правильно ли я поняла, что для работы с файлами нужен файл AR166.h? Что-то его у меня нету. Может у кого-нибудь есть? unsure.gif
Go to the top of the page
 
+Quote Post
Lalka
сообщение Oct 10 2009, 09:10
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



Люди! Кричу о помощи! Мне действительно нужно работать с массивами в ассемблере и с файлами на Си в uVision-е! С меня требуют, а я понятия не имею почему компилятор не распознает FILE. Да еще это оценочная версия, всего 8К, 98% процентов я уже заполнила. Не подскажете, где и как можно приобрести полную версию, где заодно будет и библиотека AR166.h ? Ооошинама надеюсь на помош!!!
Go to the top of the page
 
+Quote Post
тау
сообщение Oct 10 2009, 10:15
Сообщение #10


.
******

Группа: Участник
Сообщений: 2 424
Регистрация: 25-12-08
Пользователь №: 42 757



http://www.keil.com/c166/

может в C166 Evaluation Software найдется
https://www.keil.com/c166/demo/eval/c166.htm
Go to the top of the page
 
+Quote Post
prgjz
сообщение Oct 13 2009, 10:39
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Я обычно пишу на Си потом рассматриваю листинг ассемлера и если есть необходимость оптимирую в ассемблере.
Для XC16x нужно с сегментами быть внимательным и, как и для любого другого проца, знать адресацию и регистры
(или хотя бы знать где читатьsmile.gif.
Go to the top of the page
 
+Quote Post
Axel
сообщение Oct 14 2009, 16:06
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Определите пожалуйста, что есть "файл" в Вашем случае (например в смысле определения из Википедии). Может тогда ситуация станет понятнее... А файл "AR166.H" - это из кейловой операционки ARTX-166.
Go to the top of the page
 
+Quote Post
Lalka
сообщение Oct 16 2009, 16:51
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



файл - всмысле обычный файл

#include<stdio.h>
FILE *fopen(),*f;

void main(void)
{
f=fopen("c:\my_file.txt","w");
printf("Enter the word: ");scanf("%s",&word);
fclose(f);
printf("File created!");
}
...
f=fopen("c:\my_file.txt","a");
...
f=fopen("c:\my_file.txt","r");
...

prgjz,я не очень понимаю для чего эти сегменты,что это такое вообще. Знаю только, что NCONST - это ROM, а NDATA - это RAM. Не могли бы вы немного пояснить или посоветовать литературу?

И неужели никто никогда не работал с массивами в ассемблере?
Go to the top of the page
 
+Quote Post
prgjz
сообщение Oct 20 2009, 12:40
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



могу посоветовать прикреплённый файл где очень хорошо описана структкра XC167. Если ваш массив должен находится во встроенной памяти то это будет намного просче. Через сегменты адрессуются встроенная флеш и/или память подключенная к наружней шине EBC.
Во встроенной памяти всё просто:
MOV R5, Value
MOV R6, Index
MOV R4,R6 ;
SHL R4,#01H ; если ваш массив 16бит #01h, для 32бит #02h, для 8бит эту и предидущюю строчку не надо
MOV [R4+MyArray],R5 ; собственно запись в массив

Для подключенной памяти тоже самое (почтиsmile.gif
MOV R5, Value
MOV R6, Index
MOV R4,R6 ;
SHL R4,#01H ; если ваш массив 16бит #01h, для 32бит #02h, для 8бит эту и предидущюю строчку не надо
EXTS #SEG (MyArray),#01H ; указваем сегмент запрещаем до заключения следуещей
; 1ной операции прерывания иначе сегмент может измениться
MOV [R4+#SOF(MyArray)],R5 ;запись в массив с учётом сегмента

Желаю удачи!


Извеняюсь, что то не получается с загрузкой...
По этому линку вы найдёте C166S V2 Core User's Manual (c166sv2um.pdf):
http://www.infineon.com/cms/en/product/cha...112ab6b3ae30781
Go to the top of the page
 
+Quote Post
Lalka
сообщение Feb 3 2010, 16:55
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



Спасибо огромное! Не могу поверить, что кто-то ответил smile.gif Только сейчас увидела. Надеюсь, теперь разобраться будет легче.
Go to the top of the page
 
+Quote Post
Lalka
сообщение Feb 7 2010, 10:17
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-07-09
Пользователь №: 51 673



АААхахахааа! Я наконец разобралась с массивами! Спустя столько месяцев! Хочу похвастаться! smile.gif Там все оказалось намного проще! В сегменте данных пишем название массива DW и вводим массив чисел. Массив автоматически записывается по адресу 0хС000. Можно между массивами (чтобы их разделить) написать ORG 100(500... что хотим) и они будут записываться с адреса 0хС100(0хС500... и т.д.). Моему счастью нет границ! Повысили w00t.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 7 2010, 12:11
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



У меня с микроконтроллерами 80C166 связаны интересные воспоминания. Моя первая задача на профессиональном поприще была переписать на Си программу для платы на основе 80C166. Существующая программа была слеплена на ассемблере и была непригодна для существенных изменений. В распоряжении был софт Keil для C166. Кстати, плата не позволяла вести внутрисхемную отладку. Также она не позволяла делать побайтовую запись в ОЗУ, что практически исключало использование стандартной библиотеки. Спросить что-либо было не у кого. Хорошо, что хоть схема была.
Помню, что прочитал руководство по 80C166 от корки до корки, включая Instruction Set Reference. Поскольку это был мой первый микроконтроллер, было очень интересно. Также прочитал руководство по Keil. Вопросов практически не возникало - документация написана великолепно. Ну а всякие полезные советы можно найти на сайте Keil в разделе Knowledgebase.
Так что мой Вам совет: читайте руководства.
Go to the top of the page
 
+Quote Post

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

 


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


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