Просмотр исходного кода

Merge branch 'master' of https://github.com/RT-Thread/rt-thread

longtengmcu 6 лет назад
Родитель
Сommit
33e1ef436a

+ 3 - 3
bsp/raspberry-pi/raspi3-32/README.md

@@ -35,16 +35,16 @@ RT-Thread对树莓派的支持主要从树莓派2B开始,它是一个四核Cor
 
 Windows环境下推荐使用[env工具][1]进行编译。
 
-Linux下推荐使用gcc工具 [gcc-arm-none-eabi-4_8-2014q1_linux][2],如果还没有编译工具,下载后,解开文件。
+Linux下推荐使用gcc工具 gcc-arm-none-eabi-5_4-2016q3,如果还没有编译工具,下载后,解开文件。
 
 ```
-tar vxf gcc-arm-none-eabi-4_8-2014q1_linux.tar.bz2
+tar vxf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
 ```
 
 Linux环境下需要修改编译器目录设置,修改`bsp/raspi3-32/rtconfig.py`中的
 
 ```
-EXEC_PATH = r'/opt/gcc-arm-none-eabi-4_8-2014q1_gri/bin'
+EXEC_PATH = r'/opt/gcc-arm-none-eabi-5_4-2016q3/bin'
 ```
 
 为编译工具的实际所在目录,这里注意要加上后缀 `/bin`

+ 6 - 7
bsp/raspberry-pi/raspi3-32/driver/drv_spi.c

@@ -18,9 +18,9 @@
 void spi_gpio_write(rt_uint8_t pin, rt_uint8_t val)
 {
     if (val)
-        BCM283X_GPIO_GPSET(pin / 32) = 1 << (pin % 32);
+        BCM283X_GPIO_GPSET((pin / 32)) = 1 << (pin % 32);
     else
-        BCM283X_GPIO_GPCLR(pin / 32) = 0 << (pin % 32);
+        BCM283X_GPIO_GPCLR((pin / 32)) = 1 << (pin % 32);
 }
 
 struct raspi_spi_hw_config
@@ -147,11 +147,10 @@ static rt_uint32_t raspi_spi_xfer(struct rt_spi_device *device, struct rt_spi_me
         flag = 0;
     else
         flag = 1;
-
-    if (message->cs_take)
-        (config.mode & RT_SPI_CS_HIGH)?
-                spi_gpio_write(cs_pin, 1):
-                spi_gpio_write(cs_pin, 0);
+    if (message->cs_take);
+      //  (config.mode & RT_SPI_CS_HIGH)?
+      //          spi_gpio_write(cs_pin, 1):
+      //          spi_gpio_write(cs_pin, 0);
 
     /* deal data */
     res = spi_transfernb((rt_uint8_t *)message->send_buf, (rt_uint8_t *)message->recv_buf,

+ 36 - 0
bsp/w60x/drivers/board.c

@@ -213,6 +213,42 @@ void rt_hw_cpu_reset(void)
     tls_sys_reset();
 }
 
+/**
+ * The time delay function.
+ *
+ * @param microseconds.
+ */
+#include "wm_regs.h"
+void rt_hw_us_delay(rt_uint32_t us)
+{
+    rt_uint32_t ticks;
+    rt_uint32_t told, tnow, tcnt = 0;
+    rt_uint32_t reload = SysTick->LOAD;
+
+    ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
+    told = SysTick->VAL;
+    while (1)
+    {
+        tnow = SysTick->VAL;
+        if (tnow != told)
+        {
+            if (tnow < told)
+            {
+                tcnt += told - tnow;
+            }
+            else
+            {
+                tcnt += reload - tnow + told;
+            }
+            told = tnow;
+            if (tcnt >= ticks)
+            {
+                break;
+            }
+        }
+    }
+}
+
 #ifdef RT_USING_FINSH
 #include <finsh.h>
 static void reboot(uint8_t argc, char **argv)

+ 3 - 36
bsp/w60x/drivers/drv_soft_i2c.c

@@ -138,40 +138,7 @@ static rt_int32_t w60x_get_scl(void *data)
 
     return tls_gpio_read((enum tls_io_name)scl);
 }
-/**
- * The time delay function.
- *
- * @param microseconds.
- */
-static void w60x_udelay(rt_uint32_t us)
-{
-    rt_uint32_t ticks;
-    rt_uint32_t told, tnow, tcnt = 0;
-    rt_uint32_t reload = SysTick->LOAD;
 
-    ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
-    told = SysTick->VAL;
-    while (1)
-    {
-        tnow = SysTick->VAL;
-        if (tnow != told)
-        {
-            if (tnow < told)
-            {
-                tcnt += told - tnow;
-            }
-            else
-            {
-                tcnt += reload - tnow + told;
-            }
-            told = tnow;
-            if (tcnt >= ticks)
-            {
-                break;
-            }
-        }
-    }
-}
 
 static const struct rt_i2c_bit_ops w60x_bit_ops_default =
 {
@@ -180,7 +147,7 @@ static const struct rt_i2c_bit_ops w60x_bit_ops_default =
     .set_scl  = w60x_set_scl,
     .get_sda  = w60x_get_sda,
     .get_scl  = w60x_get_scl,
-    .udelay   = w60x_udelay,
+    .udelay   = rt_hw_us_delay,
     .delay_us = 1,
     .timeout  = 100
 };
@@ -201,9 +168,9 @@ static rt_err_t w60x_i2c_bus_unlock(const struct w60x_soft_i2c_config *cfg)
         while (i++ < 9)
         {
             rt_pin_write(cfg->scl, PIN_HIGH);
-            w60x_udelay(100);
+            rt_hw_us_delay(100);
             rt_pin_write(cfg->scl, PIN_LOW);
-            w60x_udelay(100);
+            rt_hw_us_delay(100);
         }
     }
     if (PIN_LOW == rt_pin_read(cfg->sda))

+ 1 - 1
src/kservice.c

@@ -538,7 +538,7 @@ void rt_show_version(void)
     rt_kprintf("- RT -     Thread Operating System\n");
     rt_kprintf(" / | \\     %d.%d.%d build %s\n",
                RT_VERSION, RT_SUBVERSION, RT_REVISION, __DATE__);
-    rt_kprintf(" 2006 - 2019 Copyright by rt-thread team\n");
+    rt_kprintf(" 2006 - 2020 Copyright by rt-thread team\n");
 }
 RTM_EXPORT(rt_show_version);