Changeset b8ffb40 in umon


Ignore:
Timestamp:
Jul 14, 2015, 2:11:27 AM (4 years ago)
Author:
Ed Sutter <edsutterjr@…>
Branches:
master
Children:
82f6941
Parents:
8107331
Message:

BBB: Changes to support runtime blinking LED.

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • main/dev/uart16550.c

    r8107331 rb8ffb40  
    186186target_gotachar(void)
    187187{
     188#if     INCLUDE_BLINKLED
     189        extern void TARGET_BLINKLED(void);
     190
     191        TARGET_BLINKLED();
     192#endif
    188193        if (CONSOLE(SIO_LSTAT) & SIO_LSTAT_RRDY)
    189194                return(1);
  • ports/beagleboneblack/am335x.h

    r8107331 rb8ffb40  
    251251/* Control Module Registers */
    252252/*===========================================================================*/
     253#define CONF_GPMC_A5                    0x0854
     254#define CONF_GPMC_A6                    0x0858
     255#define CONF_GPMC_A7                    0x085c
     256#define CONF_GPMC_A8                    0x0860
    253257#define CONF_UART0_RXD                  0x0970
    254258#define CONF_UART0_TXD                  0x0974
  • ports/beagleboneblack/config.h

    r8107331 rb8ffb40  
    145145#define MONSTACKSIZE    (16*1024)
    146146
    147 // Cogent specific options
    148 #define INCLUDE_I2C                             0
    149 #define INCLUDE_LCD                             0
    150147
    151148/* Specify inclusion of subsystems within the monitor here.
     
    196193#define INCLUDE_SD              0
    197194#define INCLUDE_DNS             0
     195#define INCLUDE_BLINKLED        1
     196#define TARGET_BLINKLED target_blinkled
    198197
    199198/* Inclusion of this next file will make sure that all of the above
  • ports/beagleboneblack/cpuio.c

    r8107331 rb8ffb40  
    88#include "am335x.h"
    99#include "uart16550.h"
     10#include "cli.h"
    1011
    1112int
     
    138139pinMuxInit(void)
    139140{
    140         // Set pin mux configuration for UART0 RX/TX pins
    141         CNTL_MODULE_REG(CONF_UART0_RXD) = SLEWSLOW | RX_ON |
    142                 PULL_OFF | MUXMODE_0;
    143         CNTL_MODULE_REG(CONF_UART0_TXD) = SLEWSLOW | RX_OFF |
    144                 PULL_OFF | MUXMODE_0;
     141    // Set pin mux configuration for UART0 RX/TX pins
     142    CNTL_MODULE_REG(CONF_UART0_RXD) = SLEWSLOW | RX_ON |
     143        PULL_OFF | MUXMODE_0;
     144    CNTL_MODULE_REG(CONF_UART0_TXD) = SLEWSLOW | RX_OFF |
     145        PULL_OFF | MUXMODE_0;
     146
     147    // Configure GPIO pins tied to four USR LEDS...
     148    // GPIO1_21: USER0 LED (D2)
     149    CNTL_MODULE_REG(CONF_GPMC_A5) = SLEWSLOW | RX_ON |
     150        PULL_OFF | MUXMODE_7;
     151    // GPIO1_22: USER1 LED (D3)
     152    CNTL_MODULE_REG(CONF_GPMC_A6) = SLEWSLOW | RX_ON |
     153        PULL_OFF | MUXMODE_7;
     154    // GPIO1_23: USER2 LED (D4)
     155    CNTL_MODULE_REG(CONF_GPMC_A7) = SLEWSLOW | RX_ON |
     156        PULL_OFF | MUXMODE_7;
     157    // GPIO1_24: USER3 LED (D5)
     158    CNTL_MODULE_REG(CONF_GPMC_A8) = SLEWSLOW | RX_ON |
     159        PULL_OFF | MUXMODE_7;
     160}
     161
     162void
     163InitGPIO1(void)
     164{
     165    // GPIO_CTRL: Enable GPIO1 module
     166        GPIO1_REG(0x130) = 0;
     167
     168    // GPIO_OE: 25-24 are outputs...
     169        GPIO1_REG(0x134) &= ~(USR0_LED | USR1_LED | USR2_LED | USR3_LED);
     170
     171    // All LEDs off...
     172        GPIO1_REG(0x13c) &= ~(USR0_LED | USR1_LED | USR2_LED | USR3_LED);
    145173}
    146174
     
    153181        ram_vector_install();
    154182
    155         // Enable the control module:
    156         CM_WKUP_REG(CM_WKUP_CONTROL_CLKCTRL) |= 2;
    157 
    158         // Enable clock for UART0:
    159         CM_WKUP_REG(CM_WKUP_UART0_CLKCTRL) |= 2;
    160 
    161         pinMuxInit();
    162 
    163         InitUART(DEFAULT_BAUD_RATE);
    164 
    165         // Set UART0 mode to 16x
    166         UART0_REG(UART_MDR1) &= ~7;
    167 }
     183    // Enable the control module:
     184    CM_WKUP_REG(CM_WKUP_CONTROL_CLKCTRL) |= 2;
     185
     186    // Enable clock for UART0:
     187    CM_WKUP_REG(CM_WKUP_UART0_CLKCTRL) |= 2;
     188
     189    // Enable clock for GPIO1:
     190    CM_PER_REG(CM_DIV_M3_DPLL_PER) |= 2;
     191
     192    pinMuxInit();
     193
     194    InitUART(DEFAULT_BAUD_RATE);
     195        InitGPIO1();
     196
     197    // Set UART0 mode to 16x
     198    UART0_REG(UART_MDR1) &= ~7;
     199}
     200
     201int
     202led(int num, int on)
     203{
     204        unsigned long bit;
     205
     206        switch(num) {
     207                case 0: // D0
     208                        bit = USR0_LED;
     209                        break;
     210                case 1: // D1
     211                        bit = USR1_LED;
     212                        break;
     213                case 2: // D2
     214                        bit = USR2_LED;
     215                        break;
     216                case 3: // D3
     217                        bit = USR3_LED;
     218                        break;
     219                default:
     220                        return(-1);
     221        }
     222
     223    // GPIO21-24:
     224        if (on)
     225            GPIO1_REG(0x13c) |= bit;
     226        else
     227            GPIO1_REG(0x13c) &= ~bit;
     228        return(0);
     229}
     230
     231void
     232target_blinkled(void)
     233{
     234#if INCLUDE_BLINKLED
     235        static uint8_t ledstate;
     236        static struct elapsed_tmr tmr;
     237
     238#define STATLED_ON()    led(0,1)
     239#define STATLED_OFF()   led(0,0)
     240#ifndef BLINKON_MSEC
     241#define BLINKON_MSEC 10000
     242#define BLINKOFF_MSEC 10000
     243#endif
     244
     245        switch(ledstate) {
     246                case 0:
     247                        startElapsedTimer(&tmr,BLINKON_MSEC);
     248                        STATLED_ON();
     249                        ledstate = 1;
     250                        break;
     251                case 1:
     252                        if(msecElapsed(&tmr)) {
     253                                STATLED_OFF();
     254                                ledstate = 2;
     255                                startElapsedTimer(&tmr,BLINKOFF_MSEC);
     256                        }
     257                        break;
     258                case 2:
     259                        if(msecElapsed(&tmr)) {
     260                                STATLED_ON();
     261                                ledstate = 1;
     262                                startElapsedTimer(&tmr,BLINKON_MSEC);
     263                        }
     264                        break;
     265        }
     266#endif
     267}
  • ports/beagleboneblack/cpuio.h

    r8107331 rb8ffb40  
    11#define DEFAULT_BAUD_RATE 115200
     2
     3#define HWREAD32(a)     *(volatile unsigned long *)(a)
     4#define HWREAD16(a)     *(volatile unsigned short *)(a)
     5#define HWREAD8(a)      *(volatile unsigned char *)(a)
     6
     7#define HWWRITE32(a,b)  *(volatile unsigned long *)(a) = (b)
     8#define HWWRITE16(a,b)  *(volatile unsigned short *)(a) = (b)
     9#define HWWRITE8(a,b)   *(volatile unsigned char *)(a) = (b)
     10
     11#define GPIO1_21    (1<<21)
     12#define GPIO1_22    (1<<22)
     13#define GPIO1_23    (1<<23)
     14#define GPIO1_24    (1<<24)
     15
     16// Referring to BBB schematic...
     17// Pg6 shows the 4 user leds, pg3 shows the pins on the Sitara
     18// The four user leds are on GPIO1, pins 21-24
     19#define USR0_LED    GPIO1_21        // Ball V15: GPMC_A5 mode7 (D2)
     20#define USR1_LED    GPIO1_22        // Ball U15: GPMC_A6 mode7 (D3)
     21#define USR2_LED    GPIO1_23        // Ball T15: GPMC_A7 mode7 (D4)
     22#define USR3_LED    GPIO1_24        // Ball V16: GPMC_A8 mode7 (D5)
  • ports/beagleboneblack/xcmdtbl.h

    r8107331 rb8ffb40  
    77/* added to the cmdtbl[] array. */
    88/* For example:
    9     "dummy",    dummycmd,   dummyHelp,
     9    { "dummy",    dummycmd,   dummyHelp,    0 },
    1010*/
Note: See TracChangeset for help on using the changeset viewer.