|
Infineon и Keil, Infineon XC167CL-16 bit и Keil uVision3 asm |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Aug 17 2009, 06:26
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(Lalka @ Aug 16 2009, 21:48)  ...помогите!... Куда помогать? (в смысле e-mail)... Да, и еще - не про ARM это. Надо бы во "Все остальные ...".
|
|
|
|
|
Aug 17 2009, 13:20
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Aug 18 2009, 06:22
|
Участник

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

|
Rw = это значит, что регистр 16-битный (word) Чтобы разобраться с обозначениями, прочитайте описание системы команд (см. прикрепленный файл) Возьмите за основу файл template.a66 из папки Keil\c166\asm. Он специально написан, чтобы использовать его как образец.
|
|
|
|
|
Aug 18 2009, 06:41
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(Lalka @ Aug 18 2009, 08:46)  ...как записывать в память адресов большие числа? Почитайте про режимы адресации... Цитата(Lalka @ Aug 18 2009, 08:46)  ...Как задать переменной конкретный адрес? В сегменте данных директива "ORG".
|
|
|
|
|
Oct 13 2009, 10:39
|
Участник

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

|
Я обычно пишу на Си потом рассматриваю листинг ассемлера и если есть необходимость оптимирую в ассемблере. Для XC16x нужно с сегментами быть внимательным и, как и для любого другого проца, знать адресацию и регистры (или хотя бы знать где читать  .
|
|
|
|
|
Oct 16 2009, 16:51
|

Участник

Группа: Участник
Сообщений: 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. Не могли бы вы немного пояснить или посоветовать литературу?
И неужели никто никогда не работал с массивами в ассемблере?
|
|
|
|
|
Oct 20 2009, 12:40
|
Участник

Группа: Участник
Сообщений: 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 ; собственно запись в массив Для подключенной памяти тоже самое (почти  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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|