mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-28 01:57:05 +08:00
[bsp/ls1cdev]添加自引导特性,添加配置选项
1、添加自引导特性,添加配置选项 2、修复cpuport.c的bug 3、修复ls1c_pin.c不能默认复用的bug
This commit is contained in:
parent
ce6a918316
commit
9a7caed323
@ -228,20 +228,6 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||||||
# RT-Thread online packages
|
# RT-Thread online packages
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# system packages
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# RT-Thread GUI Engine
|
|
||||||
#
|
|
||||||
# CONFIG_PKG_USING_GUIENGINE is not set
|
|
||||||
# CONFIG_PKG_USING_LVGL is not set
|
|
||||||
# CONFIG_PKG_USING_LWEXT4 is not set
|
|
||||||
# CONFIG_PKG_USING_PARTITION is not set
|
|
||||||
# CONFIG_PKG_USING_SQLITE is not set
|
|
||||||
# CONFIG_PKG_USING_RTI is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# IoT - internet of things
|
# IoT - internet of things
|
||||||
#
|
#
|
||||||
@ -271,6 +257,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||||||
# CONFIG_PKG_USING_COAP is not set
|
# CONFIG_PKG_USING_COAP is not set
|
||||||
# CONFIG_PKG_USING_NOPOLL is not set
|
# CONFIG_PKG_USING_NOPOLL is not set
|
||||||
# CONFIG_PKG_USING_NETUTILS is not set
|
# CONFIG_PKG_USING_NETUTILS is not set
|
||||||
|
# CONFIG_PKG_USING_ONENET is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# security packages
|
# security packages
|
||||||
@ -289,6 +276,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||||||
# multimedia packages
|
# multimedia packages
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_OPENMV is not set
|
# CONFIG_PKG_USING_OPENMV is not set
|
||||||
|
# CONFIG_PKG_USING_MUPDF is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# tools packages
|
# tools packages
|
||||||
@ -299,6 +287,26 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||||||
# CONFIG_PKG_USING_SYSTEMVIEW is not set
|
# CONFIG_PKG_USING_SYSTEMVIEW is not set
|
||||||
# CONFIG_PKG_USING_IPERF is not set
|
# CONFIG_PKG_USING_IPERF is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# system packages
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# RT-Thread GUI Engine
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_GUIENGINE is not set
|
||||||
|
# CONFIG_PKG_USING_LWEXT4 is not set
|
||||||
|
# CONFIG_PKG_USING_PARTITION is not set
|
||||||
|
# CONFIG_PKG_USING_SQLITE is not set
|
||||||
|
# CONFIG_PKG_USING_RTI is not set
|
||||||
|
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# peripheral libraries and drivers
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_STM32F4_HAL is not set
|
||||||
|
# CONFIG_PKG_USING_STM32F4_DRIVERS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# miscellaneous packages
|
# miscellaneous packages
|
||||||
#
|
#
|
||||||
@ -306,13 +314,18 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||||||
# CONFIG_PKG_USING_MINILZO is not set
|
# CONFIG_PKG_USING_MINILZO is not set
|
||||||
# CONFIG_PKG_USING_QUICKLZ is not set
|
# CONFIG_PKG_USING_QUICKLZ is not set
|
||||||
# CONFIG_PKG_USING_MULTIBUTTON is not set
|
# CONFIG_PKG_USING_MULTIBUTTON is not set
|
||||||
# CONFIG_PKG_USING_SAMPLES is not set
|
|
||||||
# CONFIG_PKG_USING_CANFESTIVAL is not set
|
# CONFIG_PKG_USING_CANFESTIVAL is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# sample package
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_SAMPLES is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# example package: hello
|
# example package: hello
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_HELLO is not set
|
# CONFIG_PKG_USING_HELLO is not set
|
||||||
|
# CONFIG_RT_USING_SELF_BOOT is not set
|
||||||
CONFIG_RT_USING_UART2=y
|
CONFIG_RT_USING_UART2=y
|
||||||
CONFIG_RT_UART_RX_BUFFER_SIZE=64
|
CONFIG_RT_UART_RX_BUFFER_SIZE=64
|
||||||
CONFIG_RT_USING_GMAC_INT_MODE=y
|
CONFIG_RT_USING_GMAC_INT_MODE=y
|
||||||
|
@ -12,6 +12,8 @@ from building import *
|
|||||||
|
|
||||||
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
|
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
|
||||||
|
|
||||||
|
rtconfig.AFLAGS += ' -I' + str(Dir('#'))
|
||||||
|
|
||||||
env = Environment(tools = ['mingw'],
|
env = Environment(tools = ['mingw'],
|
||||||
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
|
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
|
||||||
CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
|
CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
|
||||||
@ -25,6 +27,13 @@ Export('rtconfig')
|
|||||||
# prepare building environment
|
# prepare building environment
|
||||||
objs = PrepareBuilding(env, RTT_ROOT)
|
objs = PrepareBuilding(env, RTT_ROOT)
|
||||||
|
|
||||||
|
if GetDepend('RT_USING_SELF_BOOT'):
|
||||||
|
rtconfig.LFLAGS += " -Ttext 0x80010000"
|
||||||
|
else:
|
||||||
|
rtconfig.LFLAGS += " -Ttext 0x80200000"
|
||||||
|
env.Replace(LINKFLAGS = rtconfig.LFLAGS)
|
||||||
|
|
||||||
|
|
||||||
if GetDepend('RT_USING_RTGUI'):
|
if GetDepend('RT_USING_RTGUI'):
|
||||||
objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0)
|
objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0)
|
||||||
|
|
||||||
|
@ -100,6 +100,9 @@ void rt_hw_board_init(void)
|
|||||||
/* init hardware interrupt */
|
/* init hardware interrupt */
|
||||||
rt_hw_interrupt_init();
|
rt_hw_interrupt_init();
|
||||||
|
|
||||||
|
/* clear bev */
|
||||||
|
write_c0_status(read_c0_status()&(~(1<<22)));
|
||||||
|
|
||||||
/* copy vector */
|
/* copy vector */
|
||||||
rt_memcpy((void *)A_K0BASE, tlb_refill_exception, 0x80);
|
rt_memcpy((void *)A_K0BASE, tlb_refill_exception, 0x80);
|
||||||
rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x80);
|
rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x80);
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
#include "mii.c"
|
#include "mii.c"
|
||||||
#include "synopGMAC_debug.h"
|
#include "synopGMAC_debug.h"
|
||||||
#include <ls1c.h>
|
#include <ls1c.h>
|
||||||
|
#include "ls1c_pin.h"
|
||||||
|
|
||||||
#define RMII
|
#define RMII
|
||||||
|
|
||||||
#define Gmac_base 0xbfe10000
|
#define Gmac_base 0xbfe10000
|
||||||
@ -865,10 +867,22 @@ int rt_hw_eth_init(void)
|
|||||||
u64 base_addr = Gmac_base;
|
u64 base_addr = Gmac_base;
|
||||||
struct synopGMACNetworkAdapter * synopGMACadapter;
|
struct synopGMACNetworkAdapter * synopGMACadapter;
|
||||||
static u8 mac_addr0[6] = DEFAULT_MAC_ADDRESS;
|
static u8 mac_addr0[6] = DEFAULT_MAC_ADDRESS;
|
||||||
|
int index;
|
||||||
|
|
||||||
rt_sem_init(&sem_ack, "tx_ack", 1, RT_IPC_FLAG_FIFO);
|
rt_sem_init(&sem_ack, "tx_ack", 1, RT_IPC_FLAG_FIFO);
|
||||||
rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO);
|
rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO);
|
||||||
|
|
||||||
|
for(index=21; index<=30;index++)
|
||||||
|
{
|
||||||
|
pin_set_purpose(index, PIN_PURPOSE_OTHER);
|
||||||
|
pin_set_remap(index, PIN_REMAP_DEFAULT);
|
||||||
|
}
|
||||||
|
pin_set_purpose(35, PIN_PURPOSE_OTHER);
|
||||||
|
pin_set_remap(35, PIN_REMAP_DEFAULT);
|
||||||
|
*((volatile unsigned int *)0xbfd00424) &= ~(7 << 28);
|
||||||
|
*((volatile unsigned int *)0xbfd00424) |= (1 << 30); //wl rmii
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
memset(ð_dev, 0, sizeof(eth_dev));
|
memset(ð_dev, 0, sizeof(eth_dev));
|
||||||
synopGMACadapter = (struct synopGMACNetworkAdapter * )plat_alloc_memory(sizeof (struct synopGMACNetworkAdapter));
|
synopGMACadapter = (struct synopGMACNetworkAdapter * )plat_alloc_memory(sizeof (struct synopGMACNetworkAdapter));
|
||||||
|
@ -19,6 +19,10 @@ config $PKGS_DIR
|
|||||||
source "$RTT_DIR/Kconfig"
|
source "$RTT_DIR/Kconfig"
|
||||||
source "$PKGS_DIR/Kconfig"
|
source "$PKGS_DIR/Kconfig"
|
||||||
|
|
||||||
|
config RT_USING_SELF_BOOT
|
||||||
|
bool "Enable RT-Thread run without bootloader"
|
||||||
|
default n
|
||||||
|
|
||||||
if RT_USING_SERIAL
|
if RT_USING_SERIAL
|
||||||
config RT_USING_UART2
|
config RT_USING_UART2
|
||||||
bool "Using RT_USING_UART2"
|
bool "Using RT_USING_UART2"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// 引脚功能(普通gpio,pwm,复用等)相关接口
|
// 引脚功能(普通gpio,pwm,复用等)相关接口
|
||||||
|
|
||||||
|
|
||||||
#include "ls1c_public.h"
|
#include "ls1c_public.h"
|
||||||
@ -8,21 +8,21 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 把指定pin设置为指定用途(普通gpio,非gpio)
|
* 把指定pin设置为指定用途(普通gpio,非gpio)
|
||||||
* @gpio gpio引脚编号
|
* @gpio gpio引脚编号
|
||||||
* @purpose 用途
|
* @purpose 用途
|
||||||
*/
|
*/
|
||||||
void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose)
|
void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose)
|
||||||
{
|
{
|
||||||
volatile unsigned int *gpio_cfgx; // GPIO_CFGx寄存器
|
volatile unsigned int *gpio_cfgx; // GPIO_CFGx寄存器
|
||||||
unsigned int pin = GPIO_GET_PIN(gpio);
|
unsigned int pin = GPIO_GET_PIN(gpio);
|
||||||
|
|
||||||
gpio_cfgx = gpio_get_cfg_reg(gpio);
|
gpio_cfgx = gpio_get_cfg_reg(gpio);
|
||||||
if (PIN_PURPOSE_GPIO == purpose) // 引脚用作普通gpio
|
if (PIN_PURPOSE_GPIO == purpose) // 引脚用作普通gpio
|
||||||
{
|
{
|
||||||
reg_set_one_bit(gpio_cfgx, pin);
|
reg_set_one_bit(gpio_cfgx, pin);
|
||||||
}
|
}
|
||||||
else // 引脚用作其它功能(非gpio)
|
else // 引脚用作其它功能(非gpio)
|
||||||
{
|
{
|
||||||
reg_clr_one_bit(gpio_cfgx, pin);
|
reg_clr_one_bit(gpio_cfgx, pin);
|
||||||
}
|
}
|
||||||
@ -33,25 +33,27 @@ void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 设置指定pin为第n复用
|
* 设置指定pin为第n复用
|
||||||
* @gpio gpio编号
|
* @gpio gpio编号
|
||||||
* @remap 第n复用
|
* @remap 第n复用
|
||||||
*/
|
*/
|
||||||
void pin_set_remap(unsigned int gpio, pin_remap_t remap)
|
void pin_set_remap(unsigned int gpio, pin_remap_t remap)
|
||||||
{
|
{
|
||||||
volatile unsigned int *reg = NULL; // 复用寄存器
|
volatile unsigned int *reg = NULL; // 复用寄存器
|
||||||
unsigned int port = GPIO_GET_PORT(gpio);
|
unsigned int port = GPIO_GET_PORT(gpio);
|
||||||
unsigned int pin = GPIO_GET_PIN(gpio);
|
unsigned int pin = GPIO_GET_PIN(gpio);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*指定全部pin复用为0*/
|
/*指定全部pin复用为0*/
|
||||||
for(i =0; i <=4; i++)
|
for (i = 0; i <= 4; i++)
|
||||||
{
|
{
|
||||||
reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0)+((port)*0x04)+((i)*0x10));
|
reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0) + ((port) * 0x04) + ((i) * 0x10));
|
||||||
// 置0
|
// 置0
|
||||||
reg_clr_one_bit(reg, pin);
|
reg_clr_one_bit(reg, pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remap == PIN_REMAP_DEFAULT) return;
|
||||||
|
|
||||||
switch (port)
|
switch (port)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -142,7 +144,7 @@ void pin_set_remap(unsigned int gpio, pin_remap_t remap)
|
|||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 置1
|
// 置1
|
||||||
reg_set_one_bit(reg, pin);
|
reg_set_one_bit(reg, pin);
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
* Date Author Notes
|
* Date Author Notes
|
||||||
* 2010-05-17 swkyer first version
|
* 2010-05-17 swkyer first version
|
||||||
* 2010-09-04 bernard move the beginning entry to 0x80200000
|
* 2010-09-04 bernard move the beginning entry to 0x80200000
|
||||||
|
* 2018-05-12 zhuangwei use -Ttext
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OUTPUT_ARCH(mips)
|
OUTPUT_ARCH(mips)
|
||||||
@ -19,16 +20,13 @@ GROUP(-lgcc -lc)
|
|||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x80200000 ;
|
. = 0x80000000 ;
|
||||||
|
|
||||||
.start :
|
|
||||||
{
|
|
||||||
*(.start);
|
|
||||||
}
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
|
start = ABSOLUTE(.);
|
||||||
|
*(.start);
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
|
@ -156,11 +156,6 @@
|
|||||||
|
|
||||||
/* RT-Thread online packages */
|
/* RT-Thread online packages */
|
||||||
|
|
||||||
/* system packages */
|
|
||||||
|
|
||||||
/* RT-Thread GUI Engine */
|
|
||||||
|
|
||||||
|
|
||||||
/* IoT - internet of things */
|
/* IoT - internet of things */
|
||||||
|
|
||||||
|
|
||||||
@ -184,9 +179,20 @@
|
|||||||
/* tools packages */
|
/* tools packages */
|
||||||
|
|
||||||
|
|
||||||
|
/* system packages */
|
||||||
|
|
||||||
|
/* RT-Thread GUI Engine */
|
||||||
|
|
||||||
|
|
||||||
|
/* peripheral libraries and drivers */
|
||||||
|
|
||||||
|
|
||||||
/* miscellaneous packages */
|
/* miscellaneous packages */
|
||||||
|
|
||||||
|
|
||||||
|
/* sample package */
|
||||||
|
|
||||||
|
|
||||||
/* example package: hello */
|
/* example package: hello */
|
||||||
|
|
||||||
#define RT_USING_UART2
|
#define RT_USING_UART2
|
||||||
|
85
libcpu/mips/loongson_1c/sdram_cfg.h
Normal file
85
libcpu/mips/loongson_1c/sdram_cfg.h
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
|
||||||
|
#ifndef __OPENLOONGSON_SDRAM_CFG_H
|
||||||
|
#define __OPENLOONGSON_SDRAM_CFG_H
|
||||||
|
|
||||||
|
|
||||||
|
//#define SD_FREQ (6 * PLL_M) / (2 * SDRAM_PARAM_DIV_NUM)
|
||||||
|
#define SD_FREQ (((APB_CLK / 4) * (PLL_MULT / CPU_DIV)) / SDRAM_PARAM_DIV_NUM)
|
||||||
|
|
||||||
|
|
||||||
|
/* 颗粒行数 */
|
||||||
|
#define ROW_1K 0x7
|
||||||
|
#define ROW_2K 0x0
|
||||||
|
#define ROW_4K 0x1
|
||||||
|
#define ROW_8K 0x2
|
||||||
|
#define ROW_16K 0x3
|
||||||
|
/* 颗粒列数 */
|
||||||
|
#define COL_256 0x7
|
||||||
|
#define COL_512 0x0
|
||||||
|
#define COL_1K 0x1
|
||||||
|
#define COL_2K 0x2
|
||||||
|
#define COL_4K 0x3
|
||||||
|
/* 颗粒位宽 */
|
||||||
|
#define WIDTH_8 0x0
|
||||||
|
#define WIDTH_16 0x1
|
||||||
|
#define WIDTH_32 0x2
|
||||||
|
|
||||||
|
#define TRCD 3
|
||||||
|
#define TCL 3
|
||||||
|
#define TRP 3
|
||||||
|
#define TRFC 8
|
||||||
|
#define TRAS 6
|
||||||
|
#define TREF 0x818
|
||||||
|
#define TWR 2
|
||||||
|
|
||||||
|
#define DEF_SEL 0x1
|
||||||
|
#define DEF_SEL_N 0x0
|
||||||
|
#define HANG_UP 0x1
|
||||||
|
#define HANG_UP_N 0x0
|
||||||
|
#define CFG_VALID 0x1
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// 白菜板8MB
|
||||||
|
/*
|
||||||
|
以型号为IS42S16400的SDRAM为例,
|
||||||
|
物理参数为,
|
||||||
|
容量:8MB
|
||||||
|
位宽:16位
|
||||||
|
列宽:8位,即2的8次方,即256
|
||||||
|
行宽:12位,即2的12次方,即4K
|
||||||
|
|
||||||
|
所以,
|
||||||
|
颗粒的位宽=WIDTH_16
|
||||||
|
颗粒的列数=COL_256
|
||||||
|
颗粒的行数=ROW_4K
|
||||||
|
|
||||||
|
再结合宏SD_PARA0和芯片手册中寄存器SD_CONFIG,相信一看就能明白
|
||||||
|
替换宏SD_PARA0中的行宽、列宽和位宽
|
||||||
|
*/
|
||||||
|
#define SDRAM_WIDTH (WIDTH_16)
|
||||||
|
#define SDRAM_COL (COL_256)
|
||||||
|
#define SDRAM_ROW (ROW_4K)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// 智龙32MByte
|
||||||
|
#define SDRAM_WIDTH (WIDTH_16)
|
||||||
|
#define SDRAM_COL (COL_512)
|
||||||
|
#define SDRAM_ROW (ROW_8K)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SD_PARA0 (0x7f<<25 | \
|
||||||
|
(TRAS << 21) | \
|
||||||
|
(TRFC << 17) | (TRP << 14) | (TCL << 11) | \
|
||||||
|
(TRCD << 8) | (SDRAM_WIDTH << 6) | (SDRAM_COL << 3) | \
|
||||||
|
SDRAM_ROW)
|
||||||
|
|
||||||
|
#define SD_PARA1 ((HANG_UP_N << 8) | (DEF_SEL_N << 7) | (TWR << 5) | (TREF >> 7))
|
||||||
|
|
||||||
|
#define SD_PARA1_EN ((CFG_VALID << 9) | (HANG_UP_N << 8) | \
|
||||||
|
(DEF_SEL_N << 7) | (TWR << 5) | (TREF >> 7))
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user