Страница 1 из 3
Запуск Phillips LPC2368FBD100
Добавлено: Вс окт 22, 2017 01:45:29
L_VL
Коллеги, мяу!
Заимел на руки LPC2368 для ознакомления...
Читал документацию, после мучений с AT91SAM7 она мне показалась более "взрослой" и полезной
Припаяв чип на плату и достав свой мостик на CP2103 радовался я недолго.
Наковырял в Keil'е нехитрый код:
Код: Выделить всё
#include <LPC23xx.h>
int main(void) {
FIO2DIR |= (1<<12);
CLKSRCSEL = 0x01;
while(1) {
FIO2SET |= (1<<12);
FIO2CLR |= (1<<12);
}
};
Прогнал симулятором - все ок, можно шиться, чем я и занялся посредством Flash Magic.
Прошивка заливается, но на экране осциллоскопа тишина!
Порт P2.12 молчит, осциллятор молчит. Пробовал переключаться на внутренний генератор (CLKSRCSEL = 0x00;) - результат тот же.
Долго курил теорию и лабы Бауманки по этому процу (где достал - сам не понял). Согласно им все должно работать.
Если глядеть в мануал - тактирование на GPIO по дефолту всегда, все пины GPIO после ребута никуда не замаплены.
Подскажите, что с ним (или со мной) не так?

Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 03:00:23
AlphaLaiman
Вывод BOOT подтянут к питанию?
Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 09:54:52
L_VL
AlphaLaiman писал(а):Вывод BOOT подтянут к питанию?
А что это, простите, за вывод? Просмотрел весь UM10211 по линейке LPC236x, там про такой вывод ни слова...
На данный момент у меня служебные пины таковы:
Vss - GND
Vssa - GND
Vdd(3v3) - 3.3V
Dvv(dcdc) - 3.3V
Vdda - 3.3V
Vref - 3.3V
XTAL1, XTAL2 - кварц 12МГц + кондеры по 10пФ
RESET - через 10к на 3.3V
Ну и для обмена с CP2103 подключены пины P0[2]/TXD0 и P0[3]/RXD0.
Из не подключенных служебных остались только RTCX1, RTCX2 и VBAT, но они все, вроде как, относятся к часам реального времени (кварц + дежурная батарейка), которые мне и не нужны.
Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 11:22:55
uk8amk
Управление загрузчиком
upd. В этом камне оказывается используется пин P2[10]/EINT0
Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 11:46:43
L_VL
uk8amk писал(а):В этом камне оказывается используется пин P2[10]/EINT0
Все верно. В режим программирования я захожу опустив пин P2[10] на GND. Прошиваюсь успешно. Снимаю питание, снимаю перемычку с P2[10].
После запуска МК вроде как должен уйти в обычный BOOT, так гласит и дока, и присланный Вами кусочек странички.
В реальности - контроллер молчит, читаю память (в режиме программирования) - все прошилось успещно.
Или же ему P2[10] после прошивки надо жестко подтянуть к +3.3V?
Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 12:35:22
dosikus
Вы там по Редькину что ли изучаете?
На двух сразу попавшихся бордах.

Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 12:55:52
L_VL
dosikus писал(а):Вы там по Редькину что ли изучаете?
Не, спасибо, изучал по нему AT91SAM7, плакал
Но однако, здравствуйте! Вечером буду пытать!
Re: Запуск Phillips LPC2368FBD100
Добавлено: Пн окт 23, 2017 23:54:34
L_VL
Товарищи, мяу!
Все сделано... Подтяжка P2[10] на 3.3V есть.
Почитав про MEMMAP для 236x в user manual'е, вычитал, что режим запуска с флэша при коде b01 регистра.
Вот пытаюсь ему скормить:
Код: Выделить всё
#include <LPC23xx.h>
int main(void) {
MEMMAP = 0x1;
FIO2DIR |= (1<<12);
CLKSRCSEL = 0x01;
while(1) {
FIO2SET |= (1<<12);
FIO2CLR |= (1<<12);
}
};
Пробовал MEMMAP 0x2. А ему хоть бы что, ничего нет на пине P2.12... Вообще ничего!
Добавлено after 12 minutes 44 seconds:
Заглянул в 2300.s, где нашел такие строки:
Код: Выделить всё
; * REMAP: when set the startup code initializes the register MEMMAP
; * which overwrites the settings of the CPU configuration pins. The
; * startup and interrupt vectors are remapped from:
; * 0x00000000 [b]default setting (not remapped)[/b]
; * 0x40000000 when RAM_MODE is used
; * 0x80000000 when EXTMEM_MODE is used
Откуда я сделал вывод, что у 23хх так или иначе загрузка идет с адреса 0х00, где и лежит сам код (попытка чтения памяти в Flash Magic это подтверждает).
Re: Запуск Phillips LPC2368FBD100
Добавлено: Вт окт 24, 2017 06:15:33
dosikus
Приведите код что ниже кАмментов...
Re: Запуск Phillips LPC2368FBD100
Добавлено: Вт окт 24, 2017 11:30:50
L_VL
Привожу...
Спойлер
Код: Выделить всё
; Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
Mode_SYS EQU 0x1F
I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled
F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
;----------------------- Memory Definitions ------------------------------------
; Internal Memory Base Addresses
FLASH_BASE EQU 0x00000000
RAM_BASE EQU 0x40000000
EXTMEM_BASE EQU 0x80000000
; External Memory Base Addresses
STA_MEM0_BASE EQU 0x80000000
STA_MEM1_BASE EQU 0x81000000
;----------------------- Stack and Heap Definitions ----------------------------
;// <h> Stack Configuration (Stack Sizes in Bytes)
;// <o0> Undefined Mode <0x0-0xFFFFFFFF:8>
;// <o1> Supervisor Mode <0x0-0xFFFFFFFF:8>
;// <o2> Abort Mode <0x0-0xFFFFFFFF:8>
;// <o3> Fast Interrupt Mode <0x0-0xFFFFFFFF:8>
;// <o4> Interrupt Mode <0x0-0xFFFFFFFF:8>
;// <o5> User/System Mode <0x0-0xFFFFFFFF:8>
;// </h>
UND_Stack_Size EQU 0x00000000
SVC_Stack_Size EQU 0x00000008
ABT_Stack_Size EQU 0x00000000
FIQ_Stack_Size EQU 0x00000000
IRQ_Stack_Size EQU 0x00000100
USR_Stack_Size EQU 0x00000400
ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
FIQ_Stack_Size + IRQ_Stack_Size)
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE USR_Stack_Size
__initial_sp SPACE ISR_Stack_Size
Stack_Top
;// <h> Heap Configuration
;// <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF>
;// </h>
Heap_Size EQU 0x00000000
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
;----------------------- System Control Block (SCB) Module Definitions ---------
SCB_BASE EQU 0xE01FC000 ; SCB Base Address
PLLCON_OFS EQU 0x80 ; PLL Control Offset
PLLCFG_OFS EQU 0x84 ; PLL Configuration Offset
PLLSTAT_OFS EQU 0x88 ; PLL Status Offset
PLLFEED_OFS EQU 0x8C ; PLL Feed Offset
CCLKCFG_OFS EQU 0x104 ; CPU Clock Divider Reg Offset
USBCLKCFG_OFS EQU 0x108 ; USB Clock Divider Reg Offset
CLKSRCSEL_OFS EQU 0x10C ; Clock Source Select Reg Offset
SCS_OFS EQU 0x1A0 ; System Control and Status Reg Offset
PCLKSEL0_OFS EQU 0x1A8 ; Peripheral Clock Select Reg 0 Offset
PCLKSEL1_OFS EQU 0x1AC ; Peripheral Clock Select Reg 1 Offset
PCON_OFS EQU 0x0C0 ; Power Mode Control Reg Offset
PCONP_OFS EQU 0x0C4 ; Power Control for Periphs Reg Offset
; Constants
OSCRANGE EQU (1<<4) ; Oscillator Range Select
OSCEN EQU (1<<5) ; Main oscillator Enable
OSCSTAT EQU (1<<6) ; Main Oscillator Status
PLLCON_PLLE EQU (1<<0) ; PLL Enable
PLLCON_PLLC EQU (1<<1) ; PLL Connect
PLLSTAT_M EQU (0x7FFF<<0) ; PLL M Value
PLLSTAT_N EQU (0xFF<<16) ; PLL N Value
PLLSTAT_PLOCK EQU (1<<26) ; PLL Lock Status
И еще кусок
Спойлер
Код: Выделить всё
; Memory Mapping (when Interrupt Vectors are in RAM) ---------------------------
MEMMAP EQU 0xE01FC040 ; Memory Mapping Control
IF :DEF:REMAP
LDR R0, =MEMMAP
IF :DEF:EXTMEM_MODE
MOV R1, #3
ELIF :DEF:RAM_MODE
MOV R1, #2
ELSE
MOV R1, #1
ENDIF
STR R1, [R0]
ENDIF
Вот как-то так

Re: Запуск Phillips LPC2368FBD100
Добавлено: Вт окт 24, 2017 17:13:41
jcxz
[uquote="L_VL",url="/forum/viewtopic.php?p=3212626#p3212626"]Коллеги, мяу!
Подскажите, что с ним (или со мной) не так?

[/uquote]
"не так" - отсутствует JTAG.
Если у вас при пине BOOT установленном на выполнение кода из флеша, при этом входит в код ISP (так как к МК может подключиться FlashMagic), то получается что управление похоже вообще почему-то не передаётся на код во флешь.
Уверены что правильно скомпилили исходник? Симулятор - не аргумент.
Чем компилили? IAR? При компиляции выставили тип МК?
Как вариант: в LPC ROM-стартап-код проверяет контрольную сумму нескольких первых векторов прерываний (находящуюся в одном из векторов), если она неверна или недопустимое значение каких-то векторов, то управление останется в ISP-коде и не будет передано на код во флешь.
[uquote="L_VL",url="/forum/viewtopic.php?p=3213469#p3213469"]Не, спасибо, изучал по нему AT91SAM7, плакал

[/uquote]
Чтобы не плакать, изучать надо по даташиту и с эмулятором под рукой.
Re: Запуск Phillips LPC2368FBD100
Добавлено: Вт окт 24, 2017 18:34:38
L_VL
Так никто и не плакал
Даташит читан. Если бы читан не был - не задавал бы и вопросов
По коду - компилировано в Keil 4. Тип МК выставлен, выставлена компиляция под ISP, а не под Ethernet.
Re: Запуск Phillips LPC2368FBD100
Добавлено: Ср окт 25, 2017 15:00:30
L_VL
Мяу!
Ознакомился с Редькиным по LPC2000... Прочитал про переотображение памяти, про чудесный MEMMAP... Результатов пока нет...
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 13:43:09
Satyr
[uquote="L_VL",url="/forum/viewtopic.php?p=3212626#p3212626"]Коллеги, мяу!
Заимел на руки LPC2368 для ознакомления...
Читал документацию, после мучений с AT91SAM7 она мне показалась более "взрослой" и полезной

[/uquote]
Зачем ??? Эта серия LPC23xx/24xx фигня уж лет 7 как замененая на LPC16xx/LPC17xxx, да и эти уже барахло устарелое.
Не жалко собственного времени ?
[uquote="L_VL",url="/forum/viewtopic.php?p=3212626#p3212626"]аковырял в Keil'е нехитрый код:
Код: Выделить всё
#include <LPC23xx.h>
int main(void) {
FIO2DIR |= (1<<12);
CLKSRCSEL = 0x01;
while(1) {
FIO2SET |= (1<<12);
FIO2CLR |= (1<<12);
}
};
Прогнал симулятором - все ок, можно шиться, чем я и занялся посредством Flash Magic.
Прошивка заливается, но на экране осциллоскопа тишина!
Порт P2.12 молчит, осциллятор молчит. Пробовал переключаться на внутренний генератор (CLKSRCSEL = 0x00;) - результат тот же.[/uquote]
Осциллятор чтоб не молчал, его включить сначала надо. и не помню точно про LPC24xx, очень давно делал, но LPC17xx помнится мне, надо еще GPIO колнтроллер сначала включить, а потом к его ногам лезить
Добавлено after 44 minutes 25 seconds:
Зачем вам ARM7TDMI с мозголомными десятью стеками и кучей режимов ? Оно уж в бесконечно далеком прошлом.
На кортексах все куда проще, очевидней и шустрее.
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 19:13:56
L_VL
Satyr писал(а):Зачем вам ARM7TDMI
Satyr, ну вот что с извращенца возьмешь?
Все это время я тоже вечерами времени даром не терял и завел его. Работает и внутренний генератор, и внешний кварц, и PLL.
Сейчас не могу понять вот что... имею код в main:
Код: Выделить всё
while(1) {
FIO2SET |= (1<<12);
FIO2CLR |= (1<<12);
}
При кварце 12 МГц нога "дрыгается" с частотой 1.92(!!!)МГц. Та же историй с PLL, настроенным на 72МГц - частота "дрыганий" - 2,4 МГц. При внутреннем генераторе -640 кГц.
Проверил предделитель процессора - 1, периферии - 1.
Есть ли у него какой-то вариант посмотреть тактовую частоту осциллографом, не замаплен ли выход PLL на какую ногу для таких целей?

Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 19:32:58
dosikus
Мда, что ни нуб то первое что делает -мерянье частоты ногодрыга.
Заразная гадость однако...
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 19:36:29
Satyr
[uquote="L_VL",url="/forum/viewtopic.php?p=3222794#p3222794"]При кварце 12 МГц нога "дрыгается" с частотой 1.92(!!!)МГц. Та же историй с PLL, настроенным на 72МГц - частота "дрыганий" - 2,4 МГц. При внутреннем генераторе -640 кГц.

[/uquote]
Кварц, плл - вторично. как и частота ядра. важна частота переферийной шины и собственный делитель на конкретной переферии.
А так же латентность шины между яжром и периферией.
Не стоит думать, что ногой можно будет дрыгать с частотой ядра.
тактов за 5-7 ядра между записью от ядра и сменой состояния ноги - нормальный показатель.
кстати, елси ногами дергать, битбанговые алиасы на регистры в этом антикваре есть ? очень помогает в ногодрыге -))
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 19:43:31
L_VL
dosikus писал(а):Мда, что ни нуб то первое что делает
Радует Ваша неполиткорректность. Хорошо у меня кэш большой, на долго хватает.
Satyr писал(а):битбанговые алиасы на регистры в этом антикваре есть
За них пока не вчитывался
Satyr писал(а):Не стоит думать, что ногой можно будет дрыгать с частотой ядра.
тактов за 5-7 ядра между записью от ядра и сменой состояния ноги - нормальный показатель.
Да это понятно

Непонятен показатель 2,4МГц при частоте ядра 72МГц...
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 20:29:14
dosikus
Осознайте, ногодрочерство не прерогатива арм.
Re: Запуск Phillips LPC2368FBD100
Добавлено: Чт ноя 02, 2017 21:34:21
L_VL
Вы название темы видели? Запуск. Мне попросить его вывести по HDMI "Hello World!" на панель 42"?