From c677f88eee408349dcdbf9a8d67fe35404285b2d Mon Sep 17 00:00:00 2001 From: Wendal Chen Date: Wed, 5 Feb 2020 20:09:02 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=B8=BAW60x=E6=B7=BB=E5=8A=A0rt=5F?= =?UTF-8?q?hw=5Fus=5Fdelay=20https://github.com/RT-Thread/W601=5FIoT=5FBoa?= =?UTF-8?q?rd/issues/10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 思路是将drv_soft_i2c的w60x_udelay, 改名为rt_hw_us_delay, 并搬到broad.c --- bsp/w60x/drivers/board.c | 36 ++++++++++++++++++++++++++++++ bsp/w60x/drivers/drv_soft_i2c.c | 39 +++------------------------------ 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/bsp/w60x/drivers/board.c b/bsp/w60x/drivers/board.c index c104733d5b..e4e2ccde47 100644 --- a/bsp/w60x/drivers/board.c +++ b/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 static void reboot(uint8_t argc, char **argv) diff --git a/bsp/w60x/drivers/drv_soft_i2c.c b/bsp/w60x/drivers/drv_soft_i2c.c index a9365eaf07..b2e0b5b508 100644 --- a/bsp/w60x/drivers/drv_soft_i2c.c +++ b/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)) From 4ec07a04e6aa31b597317ca6b214cc68f9ce4afe Mon Sep 17 00:00:00 2001 From: bigmagic Date: Thu, 6 Feb 2020 16:00:56 +0800 Subject: [PATCH 2/4] use gcc-arm-none-eabi-5_4 compile raspi3 --- bsp/raspberry-pi/raspi3-32/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsp/raspberry-pi/raspi3-32/README.md b/bsp/raspberry-pi/raspi3-32/README.md index 0fef644adf..2d1e18655b 100644 --- a/bsp/raspberry-pi/raspi3-32/README.md +++ b/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` From 3e533e9992d668891b09276e2d3594a1ebd74e8b Mon Sep 17 00:00:00 2001 From: bigmagic Date: Thu, 6 Feb 2020 16:03:31 +0800 Subject: [PATCH 3/4] fix spi bug --- bsp/raspberry-pi/raspi3-32/driver/drv_spi.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bsp/raspberry-pi/raspi3-32/driver/drv_spi.c b/bsp/raspberry-pi/raspi3-32/driver/drv_spi.c index 32de9970e7..eab7a08b39 100644 --- a/bsp/raspberry-pi/raspi3-32/driver/drv_spi.c +++ b/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, From a7c590773e1be14e163ca67260c8927024c985dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=A4=A9=E9=BE=99=20=28Armink=29?= Date: Fri, 7 Feb 2020 13:08:04 +0800 Subject: [PATCH 4/4] Update show version info. --- src/kservice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kservice.c b/src/kservice.c index 58f04330f1..0a8786e17a 100644 --- a/src/kservice.c +++ b/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);