SlideShare a Scribd company logo
Hands-on VeriFast with STM32
microcontroller
Hands-on VeriFast with STM32
microcontroller
Hands-on VeriFast with STM32
microcontroller
Hands-on VeriFast with STM32
microcontroller
Hands-on VeriFast with STM32
microcontroller
Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
Table of ContentsTable of ContentsTable of ContentsTable of ContentsTable of Contents
☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS
☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT
☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT
☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller
☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board
☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast
☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast
What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT?
☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/
☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS
☆ Run on ARM Cortex-M, Arduino Uno, PowerPC
e200
☆ Run on ARM Cortex-M, Arduino Uno, PowerPC
e200
☆ Run on ARM Cortex-M, Arduino Uno, PowerPC
e200
☆ Run on ARM Cortex-M, Arduino Uno, PowerPC
e200
☆ Run on ARM Cortex-M, Arduino Uno, PowerPC
e200
☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec
☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte
Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Windows.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Windows.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Windows.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Windows.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Windows.en.md
☆ Install following:☆ Install following:☆ Install following:☆ Install following:☆ Install following:
*�https://git-for-windows.github.io/
*�https://launchpad.net/gcc-arm-embedded/+download
*�https://ttssh2.osdn.jp/index.html.en
*�https://cygwin.com/
*�https://git-for-windows.github.io/
*�https://launchpad.net/gcc-arm-embedded/+download
*�https://ttssh2.osdn.jp/index.html.en
*�https://cygwin.com/
*�https://git-for-windows.github.io/
*�https://launchpad.net/gcc-arm-embedded/+download
*�https://ttssh2.osdn.jp/index.html.en
*�https://cygwin.com/
*�https://git-for-windows.github.io/
*�https://launchpad.net/gcc-arm-embedded/+download
*�https://ttssh2.osdn.jp/index.html.en
*�https://cygwin.com/
*�https://git-for-windows.github.io/
*�https://launchpad.net/gcc-arm-embedded/+download
*�https://ttssh2.osdn.jp/index.html.en
*�https://cygwin.com/
☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages
*�cmake
*�libusb1.0-devel
*�cmake
*�libusb1.0-devel
*�cmake
*�libusb1.0-devel
*�cmake
*�libusb1.0-devel
*�cmake
*�libusb1.0-devel
Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows
☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�make�install)
☆ Download VeriFast from following URL, unzip it
and set PATH to "verifast-XXXXXXX/bin" directory.
☆ Download VeriFast from following URL, unzip it
and set PATH to "verifast-XXXXXXX/bin" directory.
☆ Download VeriFast from following URL, unzip it
and set PATH to "verifast-XXXXXXX/bin" directory.
☆ Download VeriFast from following URL, unzip it
and set PATH to "verifast-XXXXXXX/bin" directory.
☆ Download VeriFast from following URL, unzip it
and set PATH to "verifast-XXXXXXX/bin" directory.
https://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binaries
Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows
☆ Open cygwin terminal, and checkout custom
ChibiOS/RT source code:w
☆ Open cygwin terminal, and checkout custom
ChibiOS/RT source code:w
☆ Open cygwin terminal, and checkout custom
ChibiOS/RT source code:w
☆ Open cygwin terminal, and checkout custom
ChibiOS/RT source code:w
☆ Open cygwin terminal, and checkout custom
ChibiOS/RT source code:w
$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
Get the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOS
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.MacOS.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.MacOS.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.MacOS.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.MacOS.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.MacOS.en.md
☆ Install brew packages:☆ Install brew packages:☆ Install brew packages:☆ Install brew packages:☆ Install brew packages:
$�brew�tap�PX4/homebrew-px4
$�brew�update
$�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb
$�brew�tap�PX4/homebrew-px4
$�brew�update
$�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb
$�brew�tap�PX4/homebrew-px4
$�brew�update
$�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb
$�brew�tap�PX4/homebrew-px4
$�brew�update
$�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb
$�brew�tap�PX4/homebrew-px4
$�brew�update
$�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb
☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
Get the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOS
☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly-osx.tar.gz
$�tar�xf�verifast-nightly-osx.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly-osx.tar.gz
$�tar�xf�verifast-nightly-osx.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly-osx.tar.gz
$�tar�xf�verifast-nightly-osx.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly-osx.tar.gz
$�tar�xf�verifast-nightly-osx.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly-osx.tar.gz
$�tar�xf�verifast-nightly-osx.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:
$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
Get the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #Linux
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Linux.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Linux.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Linux.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Linux.en.md
Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/
README.Linux.en.md
☆ Install deb packages:☆ Install deb packages:☆ Install deb packages:☆ Install deb packages:☆ Install deb packages:
$�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev�
build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom
$�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev�
build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom
$�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev�
build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom
$�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev�
build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom
$�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev�
build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom
☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�sudo�ldconfig
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�sudo�ldconfig
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�sudo�ldconfig
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�sudo�ldconfig
$�git�clone�https://github.com/texane/stlink.git
$�(cd�stlink�&&�make)
$�(cd�stlink/build/Release�&&�sudo�make�install)
$�sudo�ldconfig
Get the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #Linux
☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly.tar.gz
$�tar�xf�verifast-nightly.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly.tar.gz
$�tar�xf�verifast-nightly.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly.tar.gz
$�tar�xf�verifast-nightly.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly.tar.gz
$�tar�xf�verifast-nightly.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
$�wget�
http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn.
com/verifast-nightly.tar.gz
$�tar�xf�verifast-nightly.tar.gz
$�mv�verifast-*/�verifast
$�export�PATH=`pwd`/verifast/bin:$PATH
☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:
$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
Build a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS application
☆ Finally build the code:☆ Finally build the code:☆ Finally build the code:☆ Finally build the code:☆ Finally build the code:
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make
Coffee break #1Coffee break #1Coffee break #1Coffee break #1Coffee break #1
What's STM32?What's STM32?What's STM32?What's STM32?What's STM32?
http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-
arm-cortex-mcus.html
http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-
arm-cortex-mcus.html
http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-
arm-cortex-mcus.html
http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-
arm-cortex-mcus.html
http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-
arm-cortex-mcus.html
The STM32 family of 32-bit Flash microcontrollers
based on the ARM Cortex-M processor is designed
to offer new degrees of freedom to MCU users. It
offers a 32-bit product range that combines very
high performance, real-time capabilities, digital
signal processing, and low-power, low-voltage
operation, while maintaining full integration and
ease of development.
The STM32 family of 32-bit Flash microcontrollers
based on the ARM Cortex-M processor is designed
to offer new degrees of freedom to MCU users. It
offers a 32-bit product range that combines very
high performance, real-time capabilities, digital
signal processing, and low-power, low-voltage
operation, while maintaining full integration and
ease of development.
The STM32 family of 32-bit Flash microcontrollers
based on the ARM Cortex-M processor is designed
to offer new degrees of freedom to MCU users. It
offers a 32-bit product range that combines very
high performance, real-time capabilities, digital
signal processing, and low-power, low-voltage
operation, while maintaining full integration and
ease of development.
The STM32 family of 32-bit Flash microcontrollers
based on the ARM Cortex-M processor is designed
to offer new degrees of freedom to MCU users. It
offers a 32-bit product range that combines very
high performance, real-time capabilities, digital
signal processing, and low-power, low-voltage
operation, while maintaining full integration and
ease of development.
The STM32 family of 32-bit Flash microcontrollers
based on the ARM Cortex-M processor is designed
to offer new degrees of freedom to MCU users. It
offers a 32-bit product range that combines very
high performance, real-time capabilities, digital
signal processing, and low-power, low-voltage
operation, while maintaining full integration and
ease of development.
You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board!
https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/
☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"
☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM
☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI
CEC
☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI
CEC
☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI
CEC
☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI
CEC
☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI
CEC
☆ Able to download fiwmware and debug it using
GDB
☆ Able to download fiwmware and debug it using
GDB
☆ Able to download fiwmware and debug it using
GDB
☆ Able to download fiwmware and debug it using
GDB
☆ Able to download fiwmware and debug it using
GDB
☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!
How to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #Windows
☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable
☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":
$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)
☆ Open another cygwin terminal, and dowload
application into the board:
☆ Open another cygwin terminal, and dowload
application into the board:
☆ Open another cygwin terminal, and dowload
application into the board:
☆ Open another cygwin terminal, and dowload
application into the board:
☆ Open another cygwin terminal, and dowload
application into the board:
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
How to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #Windows
☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:
(gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c
☆ Open serial console using TeraTerm with baud
rate 38400
☆ Open serial console using TeraTerm with baud
rate 38400
☆ Open serial console using TeraTerm with baud
rate 38400
☆ Open serial console using TeraTerm with baud
rate 38400
☆ Open serial console using TeraTerm with baud
rate 38400
☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
How to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOS
☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable
☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":
$�st-util$�st-util$�st-util$�st-util$�st-util
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
How to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOS
☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:
(gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c
☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:
$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423
☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
How to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #Linux
☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable
☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":
$�sudo�st-util$�sudo�st-util$�sudo�st-util$�sudo�st-util$�sudo�st-util
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
☆ Open another terminal, and download
application into the board:
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�gdbwrite
How to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #Linux
☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:
(gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c
☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:
$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0
☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS?
☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console:
***�ChibiOS/RT�test�suite
***
***�Kernel:�������3.1.5
***�Compiled:�����Jan�15�2017�-�20:38:01
***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch�
revision�213147]
***�Architecture:�ARMv6-M
***�Core�Variant:�Cortex-M0
***�Port�Info:����Preemption�through�NMI
***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices
***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
***�ChibiOS/RT�test�suite
***
***�Kernel:�������3.1.5
***�Compiled:�����Jan�15�2017�-�20:38:01
***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch�
revision�213147]
***�Architecture:�ARMv6-M
***�Core�Variant:�Cortex-M0
***�Port�Info:����Preemption�through�NMI
***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices
***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
***�ChibiOS/RT�test�suite
***
***�Kernel:�������3.1.5
***�Compiled:�����Jan�15�2017�-�20:38:01
***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch�
revision�213147]
***�Architecture:�ARMv6-M
***�Core�Variant:�Cortex-M0
***�Port�Info:����Preemption�through�NMI
***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices
***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
***�ChibiOS/RT�test�suite
***
***�Kernel:�������3.1.5
***�Compiled:�����Jan�15�2017�-�20:38:01
***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch�
revision�213147]
***�Architecture:�ARMv6-M
***�Core�Variant:�Cortex-M0
***�Port�Info:����Preemption�through�NMI
***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices
***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
***�ChibiOS/RT�test�suite
***
***�Kernel:�������3.1.5
***�Compiled:�����Jan�15�2017�-�20:38:01
***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch�
revision�213147]
***�Architecture:�ARMv6-M
***�Core�Variant:�Cortex-M0
***�Port�Info:����Preemption�through�NMI
***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices
***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
Coffee break #2Coffee break #2Coffee break #2Coffee break #2Coffee break #2
What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast?
☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast
☆ A verifier for single-threaded and multithreaded
C language programs annotated with
preconditions and postconditions written in
separation logic.
☆ A verifier for single-threaded and multithreaded
C language programs annotated with
preconditions and postconditions written in
separation logic.
☆ A verifier for single-threaded and multithreaded
C language programs annotated with
preconditions and postconditions written in
separation logic.
☆ A verifier for single-threaded and multithreaded
C language programs annotated with
preconditions and postconditions written in
separation logic.
☆ A verifier for single-threaded and multithreaded
C language programs annotated with
preconditions and postconditions written in
separation logic.
☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.
How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast?
Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial:
☆ English:☆ English:☆ English:☆ English:☆ English:
https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf
☆ Japanese:☆ Japanese:☆ Japanese:☆ Japanese:☆ Japanese:
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/
Tutorial.md
How to verify application?How to verify application?How to verify application?How to verify application?How to verify application?
Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�vfide
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�vfide
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�vfide
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�vfide
$�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO
$�make�vfide
What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS?
☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states
The state chart means...The state chart means...The state chart means...The state chart means...The state chart means...
☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state
☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()
☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()
☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state
But run-time error is caused by violation. We would
like to capture it on verification using VeriFast.
But run-time error is caused by violation. We would
like to capture it on verification using VeriFast.
But run-time error is caused by violation. We would
like to capture it on verification using VeriFast.
But run-time error is caused by violation. We would
like to capture it on verification using VeriFast.
But run-time error is caused by violation. We would
like to capture it on verification using VeriFast.
Your code already has assertionYour code already has assertionYour code already has assertionYour code already has assertionYour code already has assertion
$�cat�chibios-verifast/verifast_inc/ghost-chibios.gh
--snip--
inductive�SystemState�=
��│�InitState
��│�HALInitedState
��│�ThreadState
��│�IRQSuspendedState
��│�IRQDisabledState
��│�IRQWaitState
��│�ISRState
��│�SLockedState
��│�ILockedState
��;
predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
$�cat�chibios-verifast/verifast_inc/ghost-chibios.gh
--snip--
inductive�SystemState�=
��│�InitState
��│�HALInitedState
��│�ThreadState
��│�IRQSuspendedState
��│�IRQDisabledState
��│�IRQWaitState
��│�ISRState
��│�SLockedState
��│�ILockedState
��;
predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
$�cat�chibios-verifast/verifast_inc/ghost-chibios.gh
--snip--
inductive�SystemState�=
��│�InitState
��│�HALInitedState
��│�ThreadState
��│�IRQSuspendedState
��│�IRQDisabledState
��│�IRQWaitState
��│�ISRState
��│�SLockedState
��│�ILockedState
��;
predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
$�cat�chibios-verifast/verifast_inc/ghost-chibios.gh
--snip--
inductive�SystemState�=
��│�InitState
��│�HALInitedState
��│�ThreadState
��│�IRQSuspendedState
��│�IRQDisabledState
��│�IRQWaitState
��│�ISRState
��│�SLockedState
��│�ILockedState
��;
predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
$�cat�chibios-verifast/verifast_inc/ghost-chibios.gh
--snip--
inductive�SystemState�=
��│�InitState
��│�HALInitedState
��│�ThreadState
��│�IRQSuspendedState
��│�IRQDisabledState
��│�IRQWaitState
��│�ISRState
��│�SLockedState
��│�ILockedState
��;
predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
ChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postcondition
$�cat�chibios-verifast/verifast_inc/hal.h
--snip--
void�halInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState);
--snip--
$�cat�chibios-verifast/verifast_inc/ch.h
--snip--
void�chSysInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
void�chThdSleepMilliseconds(uint32_t�msec);
����//@�requires�chibios_sys_state_context(currentThread,�ThreadState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
$�cat�chibios-verifast/verifast_inc/hal.h
--snip--
void�halInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState);
--snip--
$�cat�chibios-verifast/verifast_inc/ch.h
--snip--
void�chSysInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
void�chThdSleepMilliseconds(uint32_t�msec);
����//@�requires�chibios_sys_state_context(currentThread,�ThreadState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
$�cat�chibios-verifast/verifast_inc/hal.h
--snip--
void�halInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState);
--snip--
$�cat�chibios-verifast/verifast_inc/ch.h
--snip--
void�chSysInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
void�chThdSleepMilliseconds(uint32_t�msec);
����//@�requires�chibios_sys_state_context(currentThread,�ThreadState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
$�cat�chibios-verifast/verifast_inc/hal.h
--snip--
void�halInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState);
--snip--
$�cat�chibios-verifast/verifast_inc/ch.h
--snip--
void�chSysInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
void�chThdSleepMilliseconds(uint32_t�msec);
����//@�requires�chibios_sys_state_context(currentThread,�ThreadState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
$�cat�chibios-verifast/verifast_inc/hal.h
--snip--
void�halInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState);
--snip--
$�cat�chibios-verifast/verifast_inc/ch.h
--snip--
void�chSysInit(void);
����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
void�chThdSleepMilliseconds(uint32_t�msec);
����//@�requires�chibios_sys_state_context(currentThread,�ThreadState);
����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
Let's violate the assertionLet's violate the assertionLet's violate the assertionLet's violate the assertionLet's violate the assertion
$�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c
int�main(void)
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�false;
{
��chSysInit();�//�<===�SWAP!
��halInit();���//�<===�SWAP!
��sdStart(&SD2,�NULL);
��while�(true)
����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState);
��{
����if�(!palReadPad(GPIOC,�GPIOC_BUTTON))
������TestThread(&SD2);
����chThdSleepMilliseconds(500);
��}
}
$�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c
int�main(void)
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�false;
{
��chSysInit();�//�<===�SWAP!
��halInit();���//�<===�SWAP!
��sdStart(&SD2,�NULL);
��while�(true)
����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState);
��{
����if�(!palReadPad(GPIOC,�GPIOC_BUTTON))
������TestThread(&SD2);
����chThdSleepMilliseconds(500);
��}
}
$�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c
int�main(void)
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�false;
{
��chSysInit();�//�<===�SWAP!
��halInit();���//�<===�SWAP!
��sdStart(&SD2,�NULL);
��while�(true)
����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState);
��{
����if�(!palReadPad(GPIOC,�GPIOC_BUTTON))
������TestThread(&SD2);
����chThdSleepMilliseconds(500);
��}
}
$�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c
int�main(void)
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�false;
{
��chSysInit();�//�<===�SWAP!
��halInit();���//�<===�SWAP!
��sdStart(&SD2,�NULL);
��while�(true)
����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState);
��{
����if�(!palReadPad(GPIOC,�GPIOC_BUTTON))
������TestThread(&SD2);
����chThdSleepMilliseconds(500);
��}
}
$�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c
int�main(void)
����//@�requires�chibios_sys_state_context(currentThread,�InitState);
����//@�ensures�false;
{
��chSysInit();�//�<===�SWAP!
��halInit();���//�<===�SWAP!
��sdStart(&SD2,�NULL);
��while�(true)
����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState);
��{
����if�(!palReadPad(GPIOC,�GPIOC_BUTTON))
������TestThread(&SD2);
����chThdSleepMilliseconds(500);
��}
}
Then you will see error on verificationThen you will see error on verificationThen you will see error on verificationThen you will see error on verificationThen you will see error on verification
HomeworkHomeworkHomeworkHomeworkHomework
☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED
☆ Verify chEvtBroadcastI() which can be call from
I-Locked or S-Locked state
☆ Verify chEvtBroadcastI() which can be call from
I-Locked or S-Locked state
☆ Verify chEvtBroadcastI() which can be call from
I-Locked or S-Locked state
☆ Verify chEvtBroadcastI() which can be call from
I-Locked or S-Locked state
☆ Verify chEvtBroadcastI() which can be call from
I-Locked or S-Locked state
http://chibios.sourceforge.net/html/
group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b
http://chibios.sourceforge.net/html/
group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b
http://chibios.sourceforge.net/html/
group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b
http://chibios.sourceforge.net/html/
group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b
http://chibios.sourceforge.net/html/
group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b
☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application:
chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP-
FATFS-USB
chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP-
FATFS-USB
chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP-
FATFS-USB
chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP-
FATFS-USB
chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP-
FATFS-USB
Special thanksSpecial thanksSpecial thanksSpecial thanksSpecial thanks
☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.
☆ Eiwa System Management, Inc. provides this
meeting room.
☆ Eiwa System Management, Inc. provides this
meeting room.
☆ Eiwa System Management, Inc. provides this
meeting room.
☆ Eiwa System Management, Inc. provides this
meeting room.
☆ Eiwa System Management, Inc. provides this
meeting room.
☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.
☆ @eldesh supports around Windows
environment, and gives advice usage of VeriFast.
☆ @eldesh supports around Windows
environment, and gives advice usage of VeriFast.
☆ @eldesh supports around Windows
environment, and gives advice usage of VeriFast.
☆ @eldesh supports around Windows
environment, and gives advice usage of VeriFast.
☆ @eldesh supports around Windows
environment, and gives advice usage of VeriFast.
License of photos #1License of photos #1License of photos #1License of photos #1License of photos #1
*�Creative�Commons�BBB�│�Flickr
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr
��https://www.flickr.com/photos/jeepersmedia/15966145248/
��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0
*�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr
��https://www.flickr.com/photos/mwichary/2234474972/
��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0
*�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr
��https://www.flickr.com/photos/kwl/3457656569/
��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0
*�Coffee�break�│�Matt�Laugier�│�Flickr
��https://www.flickr.com/photos/110206196@N06/14898090455/
��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr
��https://www.flickr.com/photos/jeepersmedia/15966145248/
��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0
*�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr
��https://www.flickr.com/photos/mwichary/2234474972/
��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0
*�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr
��https://www.flickr.com/photos/kwl/3457656569/
��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0
*�Coffee�break�│�Matt�Laugier�│�Flickr
��https://www.flickr.com/photos/110206196@N06/14898090455/
��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr
��https://www.flickr.com/photos/jeepersmedia/15966145248/
��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0
*�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr
��https://www.flickr.com/photos/mwichary/2234474972/
��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0
*�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr
��https://www.flickr.com/photos/kwl/3457656569/
��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0
*�Coffee�break�│�Matt�Laugier�│�Flickr
��https://www.flickr.com/photos/110206196@N06/14898090455/
��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr
��https://www.flickr.com/photos/jeepersmedia/15966145248/
��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0
*�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr
��https://www.flickr.com/photos/mwichary/2234474972/
��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0
*�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr
��https://www.flickr.com/photos/kwl/3457656569/
��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0
*�Coffee�break�│�Matt�Laugier�│�Flickr
��https://www.flickr.com/photos/110206196@N06/14898090455/
��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr
��https://www.flickr.com/photos/jeepersmedia/15966145248/
��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0
*�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr
��https://www.flickr.com/photos/mwichary/2234474972/
��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0
*�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr
��https://www.flickr.com/photos/kwl/3457656569/
��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0
*�Coffee�break�│�Matt�Laugier�│�Flickr
��https://www.flickr.com/photos/110206196@N06/14898090455/
��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
License of photos #2License of photos #2License of photos #2License of photos #2License of photos #2
*�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr
��https://www.flickr.com/photos/mseeley1/19953519882/
��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0
*�Sumo�│�Better�Than�Bacon�│�Flickr
��https://www.flickr.com/photos/slurm/3989895242/
��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0
*�Start�│�Start�up�│�CréAj�│�Flickr
��https://www.flickr.com/photos/103939386@N07/15423955496/
��Copyright:�CréAj�/�License:�CC�BY-ND�2.0
*�Homework�│�ejecutivoagresivo�│�Flickr
��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/
��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0
*�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr
��https://www.flickr.com/photos/juanvvc/4688054880/
��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
*�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr
��https://www.flickr.com/photos/mseeley1/19953519882/
��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0
*�Sumo�│�Better�Than�Bacon�│�Flickr
��https://www.flickr.com/photos/slurm/3989895242/
��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0
*�Start�│�Start�up�│�CréAj�│�Flickr
��https://www.flickr.com/photos/103939386@N07/15423955496/
��Copyright:�CréAj�/�License:�CC�BY-ND�2.0
*�Homework�│�ejecutivoagresivo�│�Flickr
��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/
��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0
*�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr
��https://www.flickr.com/photos/juanvvc/4688054880/
��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
*�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr
��https://www.flickr.com/photos/mseeley1/19953519882/
��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0
*�Sumo�│�Better�Than�Bacon�│�Flickr
��https://www.flickr.com/photos/slurm/3989895242/
��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0
*�Start�│�Start�up�│�CréAj�│�Flickr
��https://www.flickr.com/photos/103939386@N07/15423955496/
��Copyright:�CréAj�/�License:�CC�BY-ND�2.0
*�Homework�│�ejecutivoagresivo�│�Flickr
��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/
��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0
*�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr
��https://www.flickr.com/photos/juanvvc/4688054880/
��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
*�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr
��https://www.flickr.com/photos/mseeley1/19953519882/
��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0
*�Sumo�│�Better�Than�Bacon�│�Flickr
��https://www.flickr.com/photos/slurm/3989895242/
��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0
*�Start�│�Start�up�│�CréAj�│�Flickr
��https://www.flickr.com/photos/103939386@N07/15423955496/
��Copyright:�CréAj�/�License:�CC�BY-ND�2.0
*�Homework�│�ejecutivoagresivo�│�Flickr
��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/
��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0
*�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr
��https://www.flickr.com/photos/juanvvc/4688054880/
��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
*�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr
��https://www.flickr.com/photos/mseeley1/19953519882/
��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0
*�Sumo�│�Better�Than�Bacon�│�Flickr
��https://www.flickr.com/photos/slurm/3989895242/
��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0
*�Start�│�Start�up�│�CréAj�│�Flickr
��https://www.flickr.com/photos/103939386@N07/15423955496/
��Copyright:�CréAj�/�License:�CC�BY-ND�2.0
*�Homework�│�ejecutivoagresivo�│�Flickr
��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/
��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0
*�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr
��https://www.flickr.com/photos/juanvvc/4688054880/
��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
License of photos #3License of photos #3License of photos #3License of photos #3License of photos #3
*�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr
��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/
��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0
*�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr
��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/
��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0
*�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr
��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/
��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0
*�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr
��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/
��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0
*�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr
��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/
��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0

More Related Content

What's hot

Static typing and proof in ATS language
Static typing and proof in ATS languageStatic typing and proof in ATS language
Static typing and proof in ATS language
Kiwamu Okabe
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
Kiwamu Okabe
 
Functional IoT: Programming Language and OS
Functional IoT: Programming Language and OSFunctional IoT: Programming Language and OS
Functional IoT: Programming Language and OS
Kiwamu Okabe
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266
Kiwamu Okabe
 
Functional IoT: Introduction
Functional IoT: IntroductionFunctional IoT: Introduction
Functional IoT: Introduction
Kiwamu Okabe
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
Kiwamu Okabe
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on Arduino
Kiwamu Okabe
 
ATS2 updates 2017
ATS2 updates 2017ATS2 updates 2017
ATS2 updates 2017
Kiwamu Okabe
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATS
Kiwamu Okabe
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
Kiwamu Okabe
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi project
Kiwamu Okabe
 
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
Julia Cherniak
 
Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good parts
Jarek Ratajski
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
Paul Gallagher
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Con
guest29922
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?
Elizaveta Shashkova
 
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbertA Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
J On The Beach
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
Kiwamu Okabe
 
DNSSec
DNSSecDNSSec
Managing a R&D Lab with Foreman
Managing a R&D Lab with ForemanManaging a R&D Lab with Foreman
Managing a R&D Lab with Foreman
Julien Pivotto
 

What's hot (20)

Static typing and proof in ATS language
Static typing and proof in ATS languageStatic typing and proof in ATS language
Static typing and proof in ATS language
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
 
Functional IoT: Programming Language and OS
Functional IoT: Programming Language and OSFunctional IoT: Programming Language and OS
Functional IoT: Programming Language and OS
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266
 
Functional IoT: Introduction
Functional IoT: IntroductionFunctional IoT: Introduction
Functional IoT: Introduction
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on Arduino
 
ATS2 updates 2017
ATS2 updates 2017ATS2 updates 2017
ATS2 updates 2017
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATS
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi project
 
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal"Black Clouds and Silver Linings in Node.js Security" Liran Tal
"Black Clouds and Silver Linings in Node.js Security" Liran Tal
 
Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good parts
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Con
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?
 
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbertA Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
 
DNSSec
DNSSecDNSSec
DNSSec
 
Managing a R&D Lab with Foreman
Managing a R&D Lab with ForemanManaging a R&D Lab with Foreman
Managing a R&D Lab with Foreman
 

Viewers also liked

SecureAssist Enterprise Portal APIガイド
SecureAssist Enterprise Portal APIガイドSecureAssist Enterprise Portal APIガイド
SecureAssist Enterprise Portal APIガイド
Asterisk Research, Inc.
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?
Kiwamu Okabe
 
五軒家スプリント10月度 タイムスケジュール
五軒家スプリント10月度 タイムスケジュール五軒家スプリント10月度 タイムスケジュール
五軒家スプリント10月度 タイムスケジュール
龍一郎 北野
 
OthloEvent #9 Xamarinハンズオン
OthloEvent #9 XamarinハンズオンOthloEvent #9 Xamarinハンズオン
OthloEvent #9 Xamarinハンズオン
Hidetsugu Tamaki
 
WebサービスにおけるWebデザイナーの働き方
WebサービスにおけるWebデザイナーの働き方WebサービスにおけるWebデザイナーの働き方
WebサービスにおけるWebデザイナーの働き方
Yuta Suzuki
 
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
hiroyuki Yamamoto
 
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
Katz Ueno
 
GCC GENERIC
GCC GENERICGCC GENERIC
GCC GENERIC
Wang Hsiangkai
 
Safer IoT using functional language
Safer IoT using functional languageSafer IoT using functional language
Safer IoT using functional language
Kiwamu Okabe
 
サーバー構築ハンズオンマニュアル サンプル
サーバー構築ハンズオンマニュアル サンプルサーバー構築ハンズオンマニュアル サンプル
サーバー構築ハンズオンマニュアル サンプル
Takeshi Kabu
 
SecureAssist Visual Studio Package 導入ガイド
SecureAssist Visual Studio Package 導入ガイドSecureAssist Visual Studio Package 導入ガイド
SecureAssist Visual Studio Package 導入ガイド
Asterisk Research, Inc.
 
SecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイドSecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイド
Asterisk Research, Inc.
 
SecureAssist IntelliJ Plug-in 導入ガイド
SecureAssist IntelliJ Plug-in 導入ガイドSecureAssist IntelliJ Plug-in 導入ガイド
SecureAssist IntelliJ Plug-in 導入ガイド
Asterisk Research, Inc.
 
SecureAssist Eclipse Plug-in 導入ガイド
SecureAssist Eclipse Plug-in 導入ガイドSecureAssist Eclipse Plug-in 導入ガイド
SecureAssist Eclipse Plug-in 導入ガイド
Asterisk Research, Inc.
 
データ解析のための統計モデリング入門第5章
データ解析のための統計モデリング入門第5章データ解析のための統計モデリング入門第5章
データ解析のための統計モデリング入門第5章
Itou Tomokazu
 
伝える・見せる技術
伝える・見せる技術伝える・見せる技術
伝える・見せる技術
You&I
 
120901fp key
120901fp key120901fp key
120901fp key
ksknac
 
鹿児島に引っ越しました
鹿児島に引っ越しました鹿児島に引っ越しました
鹿児島に引っ越しました
Kenichiro MATOHARA
 
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプルサーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
Takeshi Kabu
 
Hot potato Privilege Escalation
Hot potato Privilege EscalationHot potato Privilege Escalation
Hot potato Privilege Escalation
Sunny Neo
 

Viewers also liked (20)

SecureAssist Enterprise Portal APIガイド
SecureAssist Enterprise Portal APIガイドSecureAssist Enterprise Portal APIガイド
SecureAssist Enterprise Portal APIガイド
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?
 
五軒家スプリント10月度 タイムスケジュール
五軒家スプリント10月度 タイムスケジュール五軒家スプリント10月度 タイムスケジュール
五軒家スプリント10月度 タイムスケジュール
 
OthloEvent #9 Xamarinハンズオン
OthloEvent #9 XamarinハンズオンOthloEvent #9 Xamarinハンズオン
OthloEvent #9 Xamarinハンズオン
 
WebサービスにおけるWebデザイナーの働き方
WebサービスにおけるWebデザイナーの働き方WebサービスにおけるWebデザイナーの働き方
WebサービスにおけるWebデザイナーの働き方
 
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
名古屋アジャイル勉強会「コンピテンシーを活用した人財育成」
 
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
第8回 Web 動画 サイト講座 〜 Webサイトを完成させ、来シーズンのトピックを考えよう - NAMO (NAgoya Movie Obenkyokai)
 
GCC GENERIC
GCC GENERICGCC GENERIC
GCC GENERIC
 
Safer IoT using functional language
Safer IoT using functional languageSafer IoT using functional language
Safer IoT using functional language
 
サーバー構築ハンズオンマニュアル サンプル
サーバー構築ハンズオンマニュアル サンプルサーバー構築ハンズオンマニュアル サンプル
サーバー構築ハンズオンマニュアル サンプル
 
SecureAssist Visual Studio Package 導入ガイド
SecureAssist Visual Studio Package 導入ガイドSecureAssist Visual Studio Package 導入ガイド
SecureAssist Visual Studio Package 導入ガイド
 
SecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイドSecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイド
 
SecureAssist IntelliJ Plug-in 導入ガイド
SecureAssist IntelliJ Plug-in 導入ガイドSecureAssist IntelliJ Plug-in 導入ガイド
SecureAssist IntelliJ Plug-in 導入ガイド
 
SecureAssist Eclipse Plug-in 導入ガイド
SecureAssist Eclipse Plug-in 導入ガイドSecureAssist Eclipse Plug-in 導入ガイド
SecureAssist Eclipse Plug-in 導入ガイド
 
データ解析のための統計モデリング入門第5章
データ解析のための統計モデリング入門第5章データ解析のための統計モデリング入門第5章
データ解析のための統計モデリング入門第5章
 
伝える・見せる技術
伝える・見せる技術伝える・見せる技術
伝える・見せる技術
 
120901fp key
120901fp key120901fp key
120901fp key
 
鹿児島に引っ越しました
鹿児島に引っ越しました鹿児島に引っ越しました
鹿児島に引っ越しました
 
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプルサーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
サーバー構築ハンズオンマニュアル セキュアなプロトコルを使ってみようサンプル
 
Hot potato Privilege Escalation
Hot potato Privilege EscalationHot potato Privilege Escalation
Hot potato Privilege Escalation
 

Similar to Hands-on VeriFast with STM32 microcontroller

Hands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaHands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ Osaka
Kiwamu Okabe
 
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Kiwamu Okabe
 
RTOS application verified by VeriFast, and future plan
RTOS application verified by VeriFast, and future planRTOS application verified by VeriFast, and future plan
RTOS application verified by VeriFast, and future plan
Kiwamu Okabe
 
Introduction to VeriFast @ Kyoto
Introduction to VeriFast @ KyotoIntroduction to VeriFast @ Kyoto
Introduction to VeriFast @ Kyoto
Kiwamu Okabe
 
Smart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCUSmart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCU
Kiwamu Okabe
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
Kiwamu Okabe
 
Spark Summit EU talk by William Benton
Spark Summit EU talk by William BentonSpark Summit EU talk by William Benton
Spark Summit EU talk by William Benton
Spark Summit
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
Ken Collins
 
Ephemeral DevOps: Adventures in Managing Short-Lived Systems
Ephemeral DevOps: Adventures in Managing Short-Lived SystemsEphemeral DevOps: Adventures in Managing Short-Lived Systems
Ephemeral DevOps: Adventures in Managing Short-Lived Systems
Priyanka Aash
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
Kris Buytaert
 
Thunderbolts and Lightning: Very Very Frightening
Thunderbolts and Lightning: Very Very FrighteningThunderbolts and Lightning: Very Very Frightening
Thunderbolts and Lightning: Very Very Frightening
blowmenowpls
 
An OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parserAn OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parser
Kiwamu Okabe
 
Containerize vs Virtualize
Containerize vs VirtualizeContainerize vs Virtualize
Containerize vs Virtualize
Andy d
 
NetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16xNetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16x
Hank Preston
 
Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1
Matthew McCullough
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
Raphaël PINSON
 
IPv6 for Pentesters
IPv6 for PentestersIPv6 for Pentesters
IPv6 for Pentesters
NotSoSecure Global Services
 
IPv6 for Pentesters
IPv6 for PentestersIPv6 for Pentesters
IPv6 for Pentesters
camsec
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2
Nate Murray
 
The Container Security Checklist
The Container Security Checklist The Container Security Checklist
The Container Security Checklist
LibbySchulze
 

Similar to Hands-on VeriFast with STM32 microcontroller (20)

Hands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaHands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ Osaka
 
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ Nagoya
 
RTOS application verified by VeriFast, and future plan
RTOS application verified by VeriFast, and future planRTOS application verified by VeriFast, and future plan
RTOS application verified by VeriFast, and future plan
 
Introduction to VeriFast @ Kyoto
Introduction to VeriFast @ KyotoIntroduction to VeriFast @ Kyoto
Introduction to VeriFast @ Kyoto
 
Smart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCUSmart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCU
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Spark Summit EU talk by William Benton
Spark Summit EU talk by William BentonSpark Summit EU talk by William Benton
Spark Summit EU talk by William Benton
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
Ephemeral DevOps: Adventures in Managing Short-Lived Systems
Ephemeral DevOps: Adventures in Managing Short-Lived SystemsEphemeral DevOps: Adventures in Managing Short-Lived Systems
Ephemeral DevOps: Adventures in Managing Short-Lived Systems
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Thunderbolts and Lightning: Very Very Frightening
Thunderbolts and Lightning: Very Very FrighteningThunderbolts and Lightning: Very Very Frightening
Thunderbolts and Lightning: Very Very Frightening
 
An OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parserAn OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parser
 
Containerize vs Virtualize
Containerize vs VirtualizeContainerize vs Virtualize
Containerize vs Virtualize
 
NetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16xNetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16x
 
Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
 
IPv6 for Pentesters
IPv6 for PentestersIPv6 for Pentesters
IPv6 for Pentesters
 
IPv6 for Pentesters
IPv6 for PentestersIPv6 for Pentesters
IPv6 for Pentesters
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2
 
The Container Security Checklist
The Container Security Checklist The Container Security Checklist
The Container Security Checklist
 

Recently uploaded

TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 

Recently uploaded (20)

TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 

Hands-on VeriFast with STM32 microcontroller

  • 1. Hands-on VeriFast with STM32 microcontroller Hands-on VeriFast with STM32 microcontroller Hands-on VeriFast with STM32 microcontroller Hands-on VeriFast with STM32 microcontroller Hands-on VeriFast with STM32 microcontroller Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
  • 2. Table of ContentsTable of ContentsTable of ContentsTable of ContentsTable of Contents ☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS☆ Introduce ChibiOS/RT which is a RTOS ☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT☆ Get development environment for ChibiOS/RT ☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT☆ Build sample application on ChibiOS/RT ☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller☆ Introduce STM32 microcontroller ☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board☆ Run the application on STM32 board ☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast☆ Introduce VeriFast ☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast☆ Verify the application using VeriFast
  • 3. What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT?What's ChibiOS/RT? ☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/☆ http://www.chibios.org/ ☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS☆ Simple/Small/Fast/Portable real-time OS ☆ Run on ARM Cortex-M, Arduino Uno, PowerPC e200 ☆ Run on ARM Cortex-M, Arduino Uno, PowerPC e200 ☆ Run on ARM Cortex-M, Arduino Uno, PowerPC e200 ☆ Run on ARM Cortex-M, Arduino Uno, PowerPC e200 ☆ Run on ARM Cortex-M, Arduino Uno, PowerPC e200 ☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec☆ Context Switch (STM32F4xx): 0.40 µsec ☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte☆ Kernel Size (STM32F4xx): 6172 byte
  • 4. Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Windows.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Windows.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Windows.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Windows.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Windows.en.md ☆ Install following:☆ Install following:☆ Install following:☆ Install following:☆ Install following: *�https://git-for-windows.github.io/ *�https://launchpad.net/gcc-arm-embedded/+download *�https://ttssh2.osdn.jp/index.html.en *�https://cygwin.com/ *�https://git-for-windows.github.io/ *�https://launchpad.net/gcc-arm-embedded/+download *�https://ttssh2.osdn.jp/index.html.en *�https://cygwin.com/ *�https://git-for-windows.github.io/ *�https://launchpad.net/gcc-arm-embedded/+download *�https://ttssh2.osdn.jp/index.html.en *�https://cygwin.com/ *�https://git-for-windows.github.io/ *�https://launchpad.net/gcc-arm-embedded/+download *�https://ttssh2.osdn.jp/index.html.en *�https://cygwin.com/ *�https://git-for-windows.github.io/ *�https://launchpad.net/gcc-arm-embedded/+download *�https://ttssh2.osdn.jp/index.html.en *�https://cygwin.com/ ☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages☆ Install following cygwin packages *�cmake *�libusb1.0-devel *�cmake *�libusb1.0-devel *�cmake *�libusb1.0-devel *�cmake *�libusb1.0-devel *�cmake *�libusb1.0-devel
  • 5. Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows ☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink":☆ Open cygwin terminal, and install "stlink": $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�make�install) ☆ Download VeriFast from following URL, unzip it and set PATH to "verifast-XXXXXXX/bin" directory. ☆ Download VeriFast from following URL, unzip it and set PATH to "verifast-XXXXXXX/bin" directory. ☆ Download VeriFast from following URL, unzip it and set PATH to "verifast-XXXXXXX/bin" directory. ☆ Download VeriFast from following URL, unzip it and set PATH to "verifast-XXXXXXX/bin" directory. ☆ Download VeriFast from following URL, unzip it and set PATH to "verifast-XXXXXXX/bin" directory. https://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binarieshttps://github.com/verifast/verifast#binaries
  • 6. Get the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #WindowsGet the devel-environment #Windows ☆ Open cygwin terminal, and checkout custom ChibiOS/RT source code:w ☆ Open cygwin terminal, and checkout custom ChibiOS/RT source code:w ☆ Open cygwin terminal, and checkout custom ChibiOS/RT source code:w ☆ Open cygwin terminal, and checkout custom ChibiOS/RT source code:w ☆ Open cygwin terminal, and checkout custom ChibiOS/RT source code:w $�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
  • 7. Get the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOS Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.MacOS.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.MacOS.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.MacOS.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.MacOS.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.MacOS.en.md ☆ Install brew packages:☆ Install brew packages:☆ Install brew packages:☆ Install brew packages:☆ Install brew packages: $�brew�tap�PX4/homebrew-px4 $�brew�update $�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb $�brew�tap�PX4/homebrew-px4 $�brew�update $�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb $�brew�tap�PX4/homebrew-px4 $�brew�update $�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb $�brew�tap�PX4/homebrew-px4 $�brew�update $�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb $�brew�tap�PX4/homebrew-px4 $�brew�update $�brew�install�wget�git�gcc-arm-none-eabi�cmake�picocom�libusb ☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink": $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install)
  • 8. Get the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOSGet the devel-environment #MacOS ☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH: $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly-osx.tar.gz $�tar�xf�verifast-nightly-osx.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly-osx.tar.gz $�tar�xf�verifast-nightly-osx.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly-osx.tar.gz $�tar�xf�verifast-nightly-osx.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly-osx.tar.gz $�tar�xf�verifast-nightly-osx.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly-osx.tar.gz $�tar�xf�verifast-nightly-osx.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH ☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code: $�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
  • 9. Get the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #Linux Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Linux.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Linux.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Linux.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Linux.en.md Detail:�https://github.com/fpiot/chibios-verifast/blob/master/doc/ README.Linux.en.md ☆ Install deb packages:☆ Install deb packages:☆ Install deb packages:☆ Install deb packages:☆ Install deb packages: $�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev� build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom $�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev� build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom $�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev� build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom $�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev� build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom $�sudo�apt-get�install�wget�git�libgtk2.0-0�libusb-1.0-0-dev�libgtk-3-dev� build-essential�cmake�gcc-arm-none-eabi�gdb-arm-none-eabi�picocom ☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink":☆ Install "stlink": $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�sudo�ldconfig $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�sudo�ldconfig $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�sudo�ldconfig $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�sudo�ldconfig $�git�clone�https://github.com/texane/stlink.git $�(cd�stlink�&&�make) $�(cd�stlink/build/Release�&&�sudo�make�install) $�sudo�ldconfig
  • 10. Get the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #LinuxGet the devel-environment #Linux ☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH:☆ Download VeriFast, unzip it and set PATH: $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly.tar.gz $�tar�xf�verifast-nightly.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly.tar.gz $�tar�xf�verifast-nightly.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly.tar.gz $�tar�xf�verifast-nightly.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly.tar.gz $�tar�xf�verifast-nightly.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH $�wget� http://82076e0e62875f063ae8-929808a701855dfb71539d0a4342d4be.r54.cf5.rackcdn. com/verifast-nightly.tar.gz $�tar�xf�verifast-nightly.tar.gz $�mv�verifast-*/�verifast $�export�PATH=`pwd`/verifast/bin:$PATH ☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code:☆ Checkout custom ChibiOS/RT source code: $�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git$�git�clone�https://github.com/fpiot/chibios-verifast.git
  • 11. Build a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS applicationBuild a ChibiOS application ☆ Finally build the code:☆ Finally build the code:☆ Finally build the code:☆ Finally build the code:☆ Finally build the code: $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make
  • 12. Coffee break #1Coffee break #1Coffee break #1Coffee break #1Coffee break #1
  • 13. What's STM32?What's STM32?What's STM32?What's STM32?What's STM32? http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus.html http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus.html http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus.html http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus.html http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus.html The STM32 family of 32-bit Flash microcontrollers based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. The STM32 family of 32-bit Flash microcontrollers based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. The STM32 family of 32-bit Flash microcontrollers based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. The STM32 family of 32-bit Flash microcontrollers based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. The STM32 family of 32-bit Flash microcontrollers based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.
  • 14. You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board!You can free to get own STM32 board! https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/https://developer.mbed.org/platforms/ST-Nucleo-F091RC/ ☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC"☆ "NUCLEO-F091RC" ☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM☆ ARM Cortex-M0 CPU / 256 KB Flash / 32 KB SRAM ☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI CEC ☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI CEC ☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI CEC ☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI CEC ☆ ADC / DAC / RTC / I2C / USART / SPI / CAN / HDMI CEC ☆ Able to download fiwmware and debug it using GDB ☆ Able to download fiwmware and debug it using GDB ☆ Able to download fiwmware and debug it using GDB ☆ Able to download fiwmware and debug it using GDB ☆ Able to download fiwmware and debug it using GDB ☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!☆ Thanks a lot, STMicroelectronics!
  • 15. How to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #Windows ☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable ☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util":☆ Open cygwin terminal, kick "st-util": $�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util)$�(cd�/usr/local/lib�&&�st-util) ☆ Open another cygwin terminal, and dowload application into the board: ☆ Open another cygwin terminal, and dowload application into the board: ☆ Open another cygwin terminal, and dowload application into the board: ☆ Open another cygwin terminal, and dowload application into the board: ☆ Open another cygwin terminal, and dowload application into the board: $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite
  • 16. How to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #WindowsHow to run application? #Windows ☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt: (gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c ☆ Open serial console using TeraTerm with baud rate 38400 ☆ Open serial console using TeraTerm with baud rate 38400 ☆ Open serial console using TeraTerm with baud rate 38400 ☆ Open serial console using TeraTerm with baud rate 38400 ☆ Open serial console using TeraTerm with baud rate 38400 ☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
  • 17. How to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOS ☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable☆ Connect the board to your Mac using USB cable ☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util": $�st-util$�st-util$�st-util$�st-util$�st-util ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite
  • 18. How to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOSHow to run application? #MacOS ☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt: (gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c ☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console: $�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423$�picocom�-b�38400�/dev/tty.usbmodem1423 ☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
  • 19. How to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #Linux ☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable☆ Connect the board to your PC using USB cable ☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util":☆ Kick "st-util": $�sudo�st-util$�sudo�st-util$�sudo�st-util$�sudo�st-util$�sudo�st-util ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: ☆ Open another terminal, and download application into the board: $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�gdbwrite
  • 20. How to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #LinuxHow to run application? #Linux ☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt:☆ Continue application from GDB prompt: (gdb)�c(gdb)�c(gdb)�c(gdb)�c(gdb)�c ☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console:☆ Open another terminal, and open serial console: $�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0$�picocom�-b�38400�/dev/ttyACM0 ☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board☆ Push "USER" button on the board
  • 21. Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS?Do you see test log of ChibiOS? ☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console:☆ You will see following log on serial console: ***�ChibiOS/RT�test�suite *** ***�Kernel:�������3.1.5 ***�Compiled:�����Jan�15�2017�-�20:38:01 ***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch� revision�213147] ***�Architecture:�ARMv6-M ***�Core�Variant:�Cortex-M0 ***�Port�Info:����Preemption�through�NMI ***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices ***�Test�Board:���STMicroelectronics�NUCLEO-F091RC ***�ChibiOS/RT�test�suite *** ***�Kernel:�������3.1.5 ***�Compiled:�����Jan�15�2017�-�20:38:01 ***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch� revision�213147] ***�Architecture:�ARMv6-M ***�Core�Variant:�Cortex-M0 ***�Port�Info:����Preemption�through�NMI ***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices ***�Test�Board:���STMicroelectronics�NUCLEO-F091RC ***�ChibiOS/RT�test�suite *** ***�Kernel:�������3.1.5 ***�Compiled:�����Jan�15�2017�-�20:38:01 ***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch� revision�213147] ***�Architecture:�ARMv6-M ***�Core�Variant:�Cortex-M0 ***�Port�Info:����Preemption�through�NMI ***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices ***�Test�Board:���STMicroelectronics�NUCLEO-F091RC ***�ChibiOS/RT�test�suite *** ***�Kernel:�������3.1.5 ***�Compiled:�����Jan�15�2017�-�20:38:01 ***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch� revision�213147] ***�Architecture:�ARMv6-M ***�Core�Variant:�Cortex-M0 ***�Port�Info:����Preemption�through�NMI ***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices ***�Test�Board:���STMicroelectronics�NUCLEO-F091RC ***�ChibiOS/RT�test�suite *** ***�Kernel:�������3.1.5 ***�Compiled:�����Jan�15�2017�-�20:38:01 ***�Compiler:�����GCC�4.8.4�20140725�(release)�[ARM/embedded-4_8-branch� revision�213147] ***�Architecture:�ARMv6-M ***�Core�Variant:�Cortex-M0 ***�Port�Info:����Preemption�through�NMI ***�Platform:�����STM32F091xC�Entry�Level�Access�Line�devices ***�Test�Board:���STMicroelectronics�NUCLEO-F091RC
  • 22. Coffee break #2Coffee break #2Coffee break #2Coffee break #2Coffee break #2
  • 23. What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast?What's VeriFast? ☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast☆ https://github.com/verifast/verifast ☆ A verifier for single-threaded and multithreaded C language programs annotated with preconditions and postconditions written in separation logic. ☆ A verifier for single-threaded and multithreaded C language programs annotated with preconditions and postconditions written in separation logic. ☆ A verifier for single-threaded and multithreaded C language programs annotated with preconditions and postconditions written in separation logic. ☆ A verifier for single-threaded and multithreaded C language programs annotated with preconditions and postconditions written in separation logic. ☆ A verifier for single-threaded and multithreaded C language programs annotated with preconditions and postconditions written in separation logic. ☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.☆ VeriFast is easy to use with the graphical IDE.
  • 24. How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast?How to verify C code using VeriFast? Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial:Please read VeriFast Tutorial: ☆ English:☆ English:☆ English:☆ English:☆ English: https://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdfhttps://people.cs.kuleuven.be/~bart.jacobs/verifast/tutorial.pdf ☆ Japanese:☆ Japanese:☆ Japanese:☆ Japanese:☆ Japanese: https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/ Tutorial.md https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/ Tutorial.md https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/ Tutorial.md https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/ Tutorial.md https://github.com/jverifast-ug/translate/blob/master/Manual/Tutorial/ Tutorial.md
  • 25. How to verify application?How to verify application?How to verify application?How to verify application?How to verify application? Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal:Simply kick GNU make on your terminal: $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�vfide $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�vfide $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�vfide $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�vfide $�cd�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO $�make�vfide
  • 26. What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS?What should be verified on ChibiOS? ☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states☆ ChibiOS has own system states
  • 27. The state chart means...The state chart means...The state chart means...The state chart means...The state chart means... ☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state☆ Application start at "Init" state ☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit()☆ Change into "HALInited" state calling halInit() ☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit()☆ Change into "Thread" state calling chSysInit() ☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state☆ You can call some ChibiOS API on "Thread" state But run-time error is caused by violation. We would like to capture it on verification using VeriFast. But run-time error is caused by violation. We would like to capture it on verification using VeriFast. But run-time error is caused by violation. We would like to capture it on verification using VeriFast. But run-time error is caused by violation. We would like to capture it on verification using VeriFast. But run-time error is caused by violation. We would like to capture it on verification using VeriFast.
  • 28. Your code already has assertionYour code already has assertionYour code already has assertionYour code already has assertionYour code already has assertion $�cat�chibios-verifast/verifast_inc/ghost-chibios.gh --snip-- inductive�SystemState�= ��│�InitState ��│�HALInitedState ��│�ThreadState ��│�IRQSuspendedState ��│�IRQDisabledState ��│�IRQWaitState ��│�ISRState ��│�SLockedState ��│�ILockedState ��; predicate�chibios_sys_state_context(int�threadId;�SystemState�state); $�cat�chibios-verifast/verifast_inc/ghost-chibios.gh --snip-- inductive�SystemState�= ��│�InitState ��│�HALInitedState ��│�ThreadState ��│�IRQSuspendedState ��│�IRQDisabledState ��│�IRQWaitState ��│�ISRState ��│�SLockedState ��│�ILockedState ��; predicate�chibios_sys_state_context(int�threadId;�SystemState�state); $�cat�chibios-verifast/verifast_inc/ghost-chibios.gh --snip-- inductive�SystemState�= ��│�InitState ��│�HALInitedState ��│�ThreadState ��│�IRQSuspendedState ��│�IRQDisabledState ��│�IRQWaitState ��│�ISRState ��│�SLockedState ��│�ILockedState ��; predicate�chibios_sys_state_context(int�threadId;�SystemState�state); $�cat�chibios-verifast/verifast_inc/ghost-chibios.gh --snip-- inductive�SystemState�= ��│�InitState ��│�HALInitedState ��│�ThreadState ��│�IRQSuspendedState ��│�IRQDisabledState ��│�IRQWaitState ��│�ISRState ��│�SLockedState ��│�ILockedState ��; predicate�chibios_sys_state_context(int�threadId;�SystemState�state); $�cat�chibios-verifast/verifast_inc/ghost-chibios.gh --snip-- inductive�SystemState�= ��│�InitState ��│�HALInitedState ��│�ThreadState ��│�IRQSuspendedState ��│�IRQDisabledState ��│�IRQWaitState ��│�ISRState ��│�SLockedState ��│�ILockedState ��; predicate�chibios_sys_state_context(int�threadId;�SystemState�state);
  • 29. ChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postconditionChibiOS API has pre/postcondition $�cat�chibios-verifast/verifast_inc/hal.h --snip-- void�halInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState); --snip-- $�cat�chibios-verifast/verifast_inc/ch.h --snip-- void�chSysInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); void�chThdSleepMilliseconds(uint32_t�msec); ����//@�requires�chibios_sys_state_context(currentThread,�ThreadState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); $�cat�chibios-verifast/verifast_inc/hal.h --snip-- void�halInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState); --snip-- $�cat�chibios-verifast/verifast_inc/ch.h --snip-- void�chSysInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); void�chThdSleepMilliseconds(uint32_t�msec); ����//@�requires�chibios_sys_state_context(currentThread,�ThreadState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); $�cat�chibios-verifast/verifast_inc/hal.h --snip-- void�halInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState); --snip-- $�cat�chibios-verifast/verifast_inc/ch.h --snip-- void�chSysInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); void�chThdSleepMilliseconds(uint32_t�msec); ����//@�requires�chibios_sys_state_context(currentThread,�ThreadState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); $�cat�chibios-verifast/verifast_inc/hal.h --snip-- void�halInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState); --snip-- $�cat�chibios-verifast/verifast_inc/ch.h --snip-- void�chSysInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); void�chThdSleepMilliseconds(uint32_t�msec); ����//@�requires�chibios_sys_state_context(currentThread,�ThreadState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); $�cat�chibios-verifast/verifast_inc/hal.h --snip-- void�halInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�chibios_sys_state_context(currentThread,�HALInitedState); --snip-- $�cat�chibios-verifast/verifast_inc/ch.h --snip-- void�chSysInit(void); ����//@�requires�chibios_sys_state_context(currentThread,�HALInitedState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState); void�chThdSleepMilliseconds(uint32_t�msec); ����//@�requires�chibios_sys_state_context(currentThread,�ThreadState); ����//@�ensures�chibios_sys_state_context(currentThread,�ThreadState);
  • 30. Let's violate the assertionLet's violate the assertionLet's violate the assertionLet's violate the assertionLet's violate the assertion $�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c int�main(void) ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�false; { ��chSysInit();�//�<===�SWAP! ��halInit();���//�<===�SWAP! ��sdStart(&SD2,�NULL); ��while�(true) ����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState); ��{ ����if�(!palReadPad(GPIOC,�GPIOC_BUTTON)) ������TestThread(&SD2); ����chThdSleepMilliseconds(500); ��} } $�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c int�main(void) ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�false; { ��chSysInit();�//�<===�SWAP! ��halInit();���//�<===�SWAP! ��sdStart(&SD2,�NULL); ��while�(true) ����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState); ��{ ����if�(!palReadPad(GPIOC,�GPIOC_BUTTON)) ������TestThread(&SD2); ����chThdSleepMilliseconds(500); ��} } $�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c int�main(void) ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�false; { ��chSysInit();�//�<===�SWAP! ��halInit();���//�<===�SWAP! ��sdStart(&SD2,�NULL); ��while�(true) ����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState); ��{ ����if�(!palReadPad(GPIOC,�GPIOC_BUTTON)) ������TestThread(&SD2); ����chThdSleepMilliseconds(500); ��} } $�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c int�main(void) ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�false; { ��chSysInit();�//�<===�SWAP! ��halInit();���//�<===�SWAP! ��sdStart(&SD2,�NULL); ��while�(true) ����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState); ��{ ����if�(!palReadPad(GPIOC,�GPIOC_BUTTON)) ������TestThread(&SD2); ����chThdSleepMilliseconds(500); ��} } $�vi�chibios-verifast/verifast_demo/STM32/RT-STM32F091RC-NUCLEO/main.c int�main(void) ����//@�requires�chibios_sys_state_context(currentThread,�InitState); ����//@�ensures�false; { ��chSysInit();�//�<===�SWAP! ��halInit();���//�<===�SWAP! ��sdStart(&SD2,�NULL); ��while�(true) ����//@�invariant�chibios_sys_state_context(currentThread,�ThreadState); ��{ ����if�(!palReadPad(GPIOC,�GPIOC_BUTTON)) ������TestThread(&SD2); ����chThdSleepMilliseconds(500); ��} }
  • 31. Then you will see error on verificationThen you will see error on verificationThen you will see error on verificationThen you will see error on verificationThen you will see error on verification
  • 32. HomeworkHomeworkHomeworkHomeworkHomework ☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED☆ Verify ChibiOS/RT thread blinking LED ☆ Verify chEvtBroadcastI() which can be call from I-Locked or S-Locked state ☆ Verify chEvtBroadcastI() which can be call from I-Locked or S-Locked state ☆ Verify chEvtBroadcastI() which can be call from I-Locked or S-Locked state ☆ Verify chEvtBroadcastI() which can be call from I-Locked or S-Locked state ☆ Verify chEvtBroadcastI() which can be call from I-Locked or S-Locked state http://chibios.sourceforge.net/html/ group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b http://chibios.sourceforge.net/html/ group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b http://chibios.sourceforge.net/html/ group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b http://chibios.sourceforge.net/html/ group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b http://chibios.sourceforge.net/html/ group__events.html#ga0c3fcdef2ba14d8b6b6da5aa4113f18b ☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application:☆ Verify following more complex application: chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP- FATFS-USB chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP- FATFS-USB chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP- FATFS-USB chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP- FATFS-USB chibios-verifast/ChibiOS_16.1.6/demos/STM32/RT-STM32F746G-DISCOVERY-LWIP- FATFS-USB
  • 33. Special thanksSpecial thanksSpecial thanksSpecial thanksSpecial thanks ☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards.☆ STMicroelectronics provides STM32 boards. ☆ Eiwa System Management, Inc. provides this meeting room. ☆ Eiwa System Management, Inc. provides this meeting room. ☆ Eiwa System Management, Inc. provides this meeting room. ☆ Eiwa System Management, Inc. provides this meeting room. ☆ Eiwa System Management, Inc. provides this meeting room. ☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment.☆ @ruicc supports around MacOS environment. ☆ @eldesh supports around Windows environment, and gives advice usage of VeriFast. ☆ @eldesh supports around Windows environment, and gives advice usage of VeriFast. ☆ @eldesh supports around Windows environment, and gives advice usage of VeriFast. ☆ @eldesh supports around Windows environment, and gives advice usage of VeriFast. ☆ @eldesh supports around Windows environment, and gives advice usage of VeriFast.
  • 34. License of photos #1License of photos #1License of photos #1License of photos #1License of photos #1 *�Creative�Commons�BBB�│�Flickr ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr ��https://www.flickr.com/photos/jeepersmedia/15966145248/ ��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0 *�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr ��https://www.flickr.com/photos/mwichary/2234474972/ ��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0 *�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr ��https://www.flickr.com/photos/kwl/3457656569/ ��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0 *�Coffee�break�│�Matt�Laugier�│�Flickr ��https://www.flickr.com/photos/110206196@N06/14898090455/ ��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr ��https://www.flickr.com/photos/jeepersmedia/15966145248/ ��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0 *�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr ��https://www.flickr.com/photos/mwichary/2234474972/ ��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0 *�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr ��https://www.flickr.com/photos/kwl/3457656569/ ��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0 *�Coffee�break�│�Matt�Laugier�│�Flickr ��https://www.flickr.com/photos/110206196@N06/14898090455/ ��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr ��https://www.flickr.com/photos/jeepersmedia/15966145248/ ��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0 *�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr ��https://www.flickr.com/photos/mwichary/2234474972/ ��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0 *�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr ��https://www.flickr.com/photos/kwl/3457656569/ ��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0 *�Coffee�break�│�Matt�Laugier�│�Flickr ��https://www.flickr.com/photos/110206196@N06/14898090455/ ��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr ��https://www.flickr.com/photos/jeepersmedia/15966145248/ ��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0 *�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr ��https://www.flickr.com/photos/mwichary/2234474972/ ��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0 *�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr ��https://www.flickr.com/photos/kwl/3457656569/ ��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0 *�Coffee�break�│�Matt�Laugier�│�Flickr ��https://www.flickr.com/photos/110206196@N06/14898090455/ ��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Microsoft�│�Microsoft�Store,�Connecticut,�12/2014�by�Mike�Mo��│�Flickr ��https://www.flickr.com/photos/jeepersmedia/15966145248/ ��Copyright:�Mike�Mozart�/�License:�CC�BY�2.0 *�Mac�20th�anniversary�poster�#14:�iMac�│�The�last�in�the�seri��│�Flickr ��https://www.flickr.com/photos/mwichary/2234474972/ ��Copyright:�Marcin�Wichary�/�License:�CC�BY�2.0 *�Coffee�break�│�I'm�determined�to�do�my�own�latte�art�one�day��│�Flickr ��https://www.flickr.com/photos/kwl/3457656569/ ��Copyright:�Kenny�Louie�/�License:�CC�BY�2.0 *�Coffee�break�│�Matt�Laugier�│�Flickr ��https://www.flickr.com/photos/110206196@N06/14898090455/ ��Copyright:�Matt�Laugier�/�License:�CC�BY�2.0
  • 35. License of photos #2License of photos #2License of photos #2License of photos #2License of photos #2 *�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr ��https://www.flickr.com/photos/mseeley1/19953519882/ ��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0 *�Sumo�│�Better�Than�Bacon�│�Flickr ��https://www.flickr.com/photos/slurm/3989895242/ ��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0 *�Start�│�Start�up�│�CréAj�│�Flickr ��https://www.flickr.com/photos/103939386@N07/15423955496/ ��Copyright:�CréAj�/�License:�CC�BY-ND�2.0 *�Homework�│�ejecutivoagresivo�│�Flickr ��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/ ��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0 *�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr ��https://www.flickr.com/photos/juanvvc/4688054880/ ��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0 *�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr ��https://www.flickr.com/photos/mseeley1/19953519882/ ��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0 *�Sumo�│�Better�Than�Bacon�│�Flickr ��https://www.flickr.com/photos/slurm/3989895242/ ��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0 *�Start�│�Start�up�│�CréAj�│�Flickr ��https://www.flickr.com/photos/103939386@N07/15423955496/ ��Copyright:�CréAj�/�License:�CC�BY-ND�2.0 *�Homework�│�ejecutivoagresivo�│�Flickr ��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/ ��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0 *�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr ��https://www.flickr.com/photos/juanvvc/4688054880/ ��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0 *�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr ��https://www.flickr.com/photos/mseeley1/19953519882/ ��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0 *�Sumo�│�Better�Than�Bacon�│�Flickr ��https://www.flickr.com/photos/slurm/3989895242/ ��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0 *�Start�│�Start�up�│�CréAj�│�Flickr ��https://www.flickr.com/photos/103939386@N07/15423955496/ ��Copyright:�CréAj�/�License:�CC�BY-ND�2.0 *�Homework�│�ejecutivoagresivo�│�Flickr ��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/ ��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0 *�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr ��https://www.flickr.com/photos/juanvvc/4688054880/ ��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0 *�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr ��https://www.flickr.com/photos/mseeley1/19953519882/ ��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0 *�Sumo�│�Better�Than�Bacon�│�Flickr ��https://www.flickr.com/photos/slurm/3989895242/ ��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0 *�Start�│�Start�up�│�CréAj�│�Flickr ��https://www.flickr.com/photos/103939386@N07/15423955496/ ��Copyright:�CréAj�/�License:�CC�BY-ND�2.0 *�Homework�│�ejecutivoagresivo�│�Flickr ��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/ ��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0 *�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr ��https://www.flickr.com/photos/juanvvc/4688054880/ ��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0 *�WGS7�DeltaIV�Liftoff�│�Shots�from�the�WGS7�DeltaIV�rocket�la��│�Flickr ��https://www.flickr.com/photos/mseeley1/19953519882/ ��Copyright:�Michael�Seeley�/�License:�CC�BY�2.0 *�Sumo�│�Better�Than�Bacon�│�Flickr ��https://www.flickr.com/photos/slurm/3989895242/ ��Copyright:�Better�Than�Bacon�/�License:�CC�BY�2.0 *�Start�│�Start�up�│�CréAj�│�Flickr ��https://www.flickr.com/photos/103939386@N07/15423955496/ ��Copyright:�CréAj�/�License:�CC�BY-ND�2.0 *�Homework�│�ejecutivoagresivo�│�Flickr ��https://www.flickr.com/photos/ejecutivoagresivo/5872031749/ ��Copyright:�ejecutivoagresivo�/�License:�CC�BY�2.0 *�ESAT�KULeuven�│�Pues�aquí�es�donde�trabajo�durante�estos�mes��│�Flickr ��https://www.flickr.com/photos/juanvvc/4688054880/ ��Copyright:�Juan�V.�Vera�del�Campo�/�License:�CC�BY-SA�2.0
  • 36. License of photos #3License of photos #3License of photos #3License of photos #3License of photos #3 *�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr ��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/ ��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0 *�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr ��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/ ��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0 *�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr ��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/ ��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0 *�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr ��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/ ��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0 *�Thank�you...�│�Thank�you�to�everyone�on�Flickr�who�comments���│�Flickr ��https://www.flickr.com/photos/pearlslaceandruffles/4767722515/ ��Copyright:�Dee�♥�/�License:�CC�BY-ND�2.0