Nucleus

From Fritz!Box
Jump to: navigation, search

AVM Wiki >> Lexikon >> Nucleus @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Hardware System Netzwerk Dienste Telefonie Multimedia Automation Business Extras Sonstiges Todo

Contents

Begriff

Nucleus ist ein sehr kompaktes Echtzeit-Betriebssystem (RTOS) für Embedded Systems. Es wird vielfätig eingesetzt und Varianten davon sind noch heute top-aktuell. Nucleus wurde von vielen Firmen lizensiert, von der NASA bis hin zu Texas Instruments, Infineon und Xilinx. Die Variante Nucleus PLUS, die auf zahlreichen Prozessoren läuft, wurde auch in AVM-Geräten mit UBIK Chips eingesetzt, wie z.B. in den FRITZ!Box-Modellen 5050 und 7050.

Xilinx, Lieferant der Spartan-FPGA in allen Nachfolgermodellen ohne UBIK Chip liefert auch einen Soft-IP-Core, die MicroBlaze-CPU auf der Nucleus Plus läuft, und die Mentor Graphics EDGE tools als Entwicklungsumgebung zu ihrem Spartan-3E Starter board. Es könnte daher durchaus sein das die CAPI-Stacks der Spartan-FPGA FRITZ!Box Fon Modelle auch heute noch in IP-Cores unter Nucleus PLUS laufen.

Nucleus PLUS

In den Firmwares der Chips UBIK-1 (z.B. im BlueFRITZ! AP-ISDN) und UBIK-2 (z.B. in der FRITZ!Box Fon WLAN 7050) kommt die selbe Nucleus Plus Version für ARM Prozessoren zum Einsatz:

Copyright (c) 1993-2001 ATI - Nucleus PLUS - Version ARM 6/7/9 1.13.21
G,M,D,GB,GL,AG,KL,CR,HR,NH,DL,BH,LP,AP,HA,ME,KC,KH,GF,RG,HS,DS,KY,BC,LC,TD
Accelerated Technology Internal Use Only - Serial Number: #25589

Auch in der BME der Fusiv-Modelle läuft die Nucleus Plus Version für T1040 Xtensa Hard-IP-Cores:

Copyright MGC 2002 - Nucleus PLUS - T1040 Xtensa v. 1.13.1
G,M,D,GB,GL,AG,KL,CR,HR,NH,DL,BH,LP,AP,HA,ME,KC,KH,GF,RG,HS,DS,KY,BC,LC,TD
Accelerated Technology Internal Use Only - Serial Number: NP0000

Nucleus-Shell

Zumindest in der UBIK-1 Firmware (z.B. im BlueFRITZ! AP-ISDN) ist eine Nucleus Debugger Shell mit Monitor, Disassembler, und CAPI- und Bluetooth-Erweiterungen eingebaut:

General information:
   Value prefixes: # - decimal, %% - binary, o - octal, none or x - hex
   Commands can be shortened as long as they are definite.
   Most multi word commands (and their abbreviations) can be concatenated.
   Valid casts are (char *), (short *) and (int *).
   <addr> and <value> can be mathmatical expressions. (Pay attention to precedence!)
   Furthermore <addr> can be ":<register>" and "=<symbol>".

Commands (nucleus):
   current [<name>]                 show/set current task/HISR
   events                           list all events
   hisrs [+]                        list all HISRs [extended]
   hisrs <name> [+]                 list named HISRs [extended]
   hisrs <name> clear               clear HISR statistics (on named task)
   memorypools [+]                  list all memory pools
   partitions [+]                   list all partition pools
   pipes [+] [name]                 list all pipes or the named pipe
   queues [+] [name]                list all queues or the named queue
   semaphores                       list all semaphores
   tasks [+]                        list all tasks [extended]
   tasks <name> [+]                 list specified task [extended]
   go tasks <name>                  resume specified task
   halt tasks <name>                suspend specified task
   tasks <name> clear               clear task statistics (on named task)
   timers                           list all timers

Commands (general):
   [debug] call function-addr [param [, param]+] call function with params. [debug] no NULL pointer check
   [debug] change byte <addr> <value>     change the byte at <addr> to <value>
   [debug] change dword <addr> <value>    change the dword at <addr> to <value>
   [debug] change word <addr> <value>     change the word at <addr> to <value>
                                if debug is prefixed no memory check is performed
   debug <destination>              route debug to {usb,sync,async,capi,null}
   debug +                          set StopOnAssert
   debug -                          clear StopOnAssert
   debug mac (+|-)                  set/clear Do_DSL_Debug_Printf
   debug <level>                    set all debug id's to <level>
   debug <id> <level>               set specified debug id <id> to <level>
   debug <id> <sub-id> <level>      set specified debug id <id>/<sub-id> to <level>
   dump bytes [<addr> [<count>]]    dump <count> bytes from <addr>
   dump dwords [<addr> [<count>]]   dump <count> dwords from <addr>
   dump words [<addr> [<count>]]    dump <count> words from <addr>
   eval(b|o|d|x) <expression>       evaluate <expression>, display as bin/oct/dec/hex
   go [+|-]                         go (disable watchdog | trace EXCEPT)
   halt                             halt
   help / ?                         this help text
   performance                      show performance counter status
   performance help                 list the performance counter event IDs
   performance set <number> <id> [<count>]
                                    set performance counter <number> to count <id> events.
                                    Optionally trigger an exception after <count> hits.
   registers [<task>]               display registers of (new) current task
   stack [<task>] [<lines>]         show <lines> lines of <task>'s stack
   symbols <name>                   show the symbol <name>
   symbols <addr>                   show the symbol <name> near to addr
   debug symbols                    show the number of symbols
   debug symbols +                  show the dynamic symbols
   reset                            reset card
   unassemble [<addr> [<count>]]    unassemble <count> instructions from address <addr>
   update                           jump back to 'urlader' for update
   version                          print version string (and BD_ADDR, if available)
   [debug] * [cast] <addr> = <value> set contents of <addr> of type <cast> to <value>, [debug] no addr check

User commands:
   write bluetooth <value>          write 00:04:0e:<value> as new BD_ADDR
   write mac <value>                write 0x00040e<value> as new mac address
   write serial "string"            write 8/16-byte serial string
   user 1-7                         some Tests: 1 WD, 2-4 MMU, 5 SWI, 6 HW Error, 7 Timermax

Watchpoint management:
   watchpoints                      show watchpoint status
   watchpoint enable <number>       enable the watchpoint (range) <number>
   watchpoint disable <number>      disable the watchpoint (range) <number>
   watchpoints mode                 switch data and<->or instruction watchpoint checking
   watchpoints set <number> <address> [<count>] [enabled]
                                    set watchpoint <number> at <address> which triggers
                                    after <count> hits, if enabled
   watchpoints set <number> data <address> [<count>] [(nodag0|nodag1)] [(noread|nowrite)] [enabled]
                                    Set data watchpoint. Optionally ignore access via DAG0 or DAG1
                                    or read or write access.
   watchpoints set <number> range <from> <to> [<count>] [exclusive] [enabled]
                                    set watchpoint <number> for the range (exclusive)
                                    <from> - <to>. Trigger after <count> hits, if enabled
   watchpoints set <number> data range <from> <to> [<count>] [exclusive] [(nodag0|nodag1)]
                                                             [(noread|nowrite)][enabled]
                                    set data watchpoint range as explained above.
   find bytes <from> <to> <value> [<count>]  find byte <value> in the range <from> - <to>
   find words <from> <to> <value> [<count>]  find word <value> in the range <from> - <to>
   find dwords <from> <to> <value> [<count>] find dword <value> in the range <from> - <to>

Capi stack commands:
   applid                           list all registered applids
   queue = <patch-value>            patch QUEUE[] valiable in ISDN stack
   debug memorypools go             start malloc/free loggig
   debug memorypools halt           stop and list malloc/free loggig

Bluetooth commands:
   bluetooth                        list all bluetooth links and piconets
   write bluetooth <addr> <value>   write to SIW[1502/1701] chip register
   read bluetooth <addr> <value>    read from SIW[1502/1701] chip register
   data                             read alle database entries
   clear flash [+]                  cleanup flash (+ delete asserts
   clear flash bluetooth            clear alle link key entries from flash file system
   clear flash bluetooth <entry>    clear <entry> link key entries from flash file system
   read flash [number of entries]   read entires from flash file system

Artikel zum Thema

  • TODO

Siehe auch

FBox-Fon2: (27)

Elektronik: (113)

Links