Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Запуск Phillips LPC2368FBD100

Вс окт 22, 2017 01:45:29

Коллеги, мяу!

Заимел на руки 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 после ребута никуда не замаплены.

Подскажите, что с ним (или со мной) не так? :roll:

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 03:00:23

Вывод BOOT подтянут к питанию?

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 09:54:52

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

Управление загрузчиком

upd. В этом камне оказывается используется пин P2[10]/EINT0
Вложения
bootloader.PNG
(175.63 KiB) Скачиваний: 905

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 11:46:43

uk8amk писал(а):В этом камне оказывается используется пин P2[10]/EINT0


Все верно. В режим программирования я захожу опустив пин P2[10] на GND. Прошиваюсь успешно. Снимаю питание, снимаю перемычку с P2[10].

После запуска МК вроде как должен уйти в обычный BOOT, так гласит и дока, и присланный Вами кусочек странички.

В реальности - контроллер молчит, читаю память (в режиме программирования) - все прошилось успещно.
Или же ему P2[10] после прошивки надо жестко подтянуть к +3.3V?

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 12:35:22

Вы там по Редькину что ли изучаете?
На двух сразу попавшихся бордах.

Изображение Изображение

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 12:55:52

dosikus писал(а):Вы там по Редькину что ли изучаете?


Не, спасибо, изучал по нему AT91SAM7, плакал :))) :))) :)))

Но однако, здравствуйте! Вечером буду пытать!

Re: Запуск Phillips LPC2368FBD100

Пн окт 23, 2017 23:54:34

Товарищи, мяу!

Все сделано... Подтяжка 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

Приведите код что ниже кАмментов...

Re: Запуск Phillips LPC2368FBD100

Вт окт 24, 2017 11:30:50

Привожу...

Спойлер
Код:
; 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

Вот как-то так :oops:

Re: Запуск Phillips LPC2368FBD100

Вт окт 24, 2017 17:13:41

Коллеги, мяу!
Подскажите, что с ним (или со мной) не так? :roll:

"не так" - отсутствует JTAG.

Если у вас при пине BOOT установленном на выполнение кода из флеша, при этом входит в код ISP (так как к МК может подключиться FlashMagic), то получается что управление похоже вообще почему-то не передаётся на код во флешь.
Уверены что правильно скомпилили исходник? Симулятор - не аргумент.
Чем компилили? IAR? При компиляции выставили тип МК?
Как вариант: в LPC ROM-стартап-код проверяет контрольную сумму нескольких первых векторов прерываний (находящуюся в одном из векторов), если она неверна или недопустимое значение каких-то векторов, то управление останется в ISP-коде и не будет передано на код во флешь.

Не, спасибо, изучал по нему AT91SAM7, плакал :))) :))) :)))

Чтобы не плакать, изучать надо по даташиту и с эмулятором под рукой.

Re: Запуск Phillips LPC2368FBD100

Вт окт 24, 2017 18:34:38

Так никто и не плакал :kill:

Даташит читан. Если бы читан не был - не задавал бы и вопросов :)))

По коду - компилировано в Keil 4. Тип МК выставлен, выставлена компиляция под ISP, а не под Ethernet.

Re: Запуск Phillips LPC2368FBD100

Ср окт 25, 2017 15:00:30

Мяу!

Ознакомился с Редькиным по LPC2000... Прочитал про переотображение памяти, про чудесный MEMMAP... Результатов пока нет...

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 13:43:09

Коллеги, мяу!
Заимел на руки LPC2368 для ознакомления...
Читал документацию, после мучений с AT91SAM7 она мне показалась более "взрослой" и полезной :)

Зачем ??? Эта серия LPC23xx/24xx фигня уж лет 7 как замененая на LPC16xx/LPC17xxx, да и эти уже барахло устарелое.
Не жалко собственного времени ?

аковырял в Keil&#39;е нехитрый код:
Код:
#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;) - результат тот же.


Осциллятор чтоб не молчал, его включить сначала надо. и не помню точно про LPC24xx, очень давно делал, но LPC17xx помнится мне, надо еще GPIO колнтроллер сначала включить, а потом к его ногам лезить

Добавлено after 44 minutes 25 seconds:
Зачем вам ARM7TDMI с мозголомными десятью стеками и кучей режимов ? Оно уж в бесконечно далеком прошлом.
На кортексах все куда проще, очевидней и шустрее.

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 19:13:56

Satyr писал(а):Зачем вам ARM7TDMI


Satyr, ну вот что с извращенца возьмешь? :)))

Все это время я тоже вечерами времени даром не терял и завел его. Работает и внутренний генератор, и внешний кварц, и PLL. :tea:

Сейчас не могу понять вот что... имею код в main:
Код:
while(1) {
      FIO2SET |= (1<<12);
      FIO2CLR |= (1<<12);
   }

При кварце 12 МГц нога "дрыгается" с частотой 1.92(!!!)МГц. Та же историй с PLL, настроенным на 72МГц - частота "дрыганий" - 2,4 МГц. При внутреннем генераторе -640 кГц. :shock:

Проверил предделитель процессора - 1, периферии - 1.

Есть ли у него какой-то вариант посмотреть тактовую частоту осциллографом, не замаплен ли выход PLL на какую ногу для таких целей? :roll:

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 19:32:58

Мда, что ни нуб то первое что делает -мерянье частоты ногодрыга.
Заразная гадость однако...

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 19:36:29

При кварце 12 МГц нога "дрыгается" с частотой 1.92(!!!)МГц. Та же историй с PLL, настроенным на 72МГц - частота "дрыганий" - 2,4 МГц. При внутреннем генераторе -640 кГц. :shock:

Кварц, плл - вторично. как и частота ядра. важна частота переферийной шины и собственный делитель на конкретной переферии.
А так же латентность шины между яжром и периферией.

Не стоит думать, что ногой можно будет дрыгать с частотой ядра.

тактов за 5-7 ядра между записью от ядра и сменой состояния ноги - нормальный показатель.

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

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 19:43:31

dosikus писал(а):Мда, что ни нуб то первое что делает

Радует Ваша неполиткорректность. Хорошо у меня кэш большой, на долго хватает.

Satyr писал(а):битбанговые алиасы на регистры в этом антикваре есть

За них пока не вчитывался :dont_know:

Satyr писал(а):Не стоит думать, что ногой можно будет дрыгать с частотой ядра.

тактов за 5-7 ядра между записью от ядра и сменой состояния ноги - нормальный показатель.

Да это понятно :)) Непонятен показатель 2,4МГц при частоте ядра 72МГц...

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 20:29:14

Осознайте, ногодрочерство не прерогатива арм.

Re: Запуск Phillips LPC2368FBD100

Чт ноя 02, 2017 21:34:21

Вы название темы видели? Запуск. Мне попросить его вывести по HDMI "Hello World!" на панель 42"?
Ответить