Control Your Peripherals Using a Browser
June 06, 2024
on
on
SunASIC Technolgies has created an innovative way to control your peripherals using any browser on any operating system, without needing to install any drivers, apps, or extensions. The demonstration code on a Cortex-M4 only takes 15 KB Flash + 14 KB SRAM.
Designing and providing an interface for people to interact with embedded systems is always a challenge. Some products may have buttons and LCDs, which may be more challenging to use as devices get smaller. Wireless connections via Wi-Fi or Bluetooth are common, but come at the cost of hardware and software complexity, and require an app for each of the Android, iOS, Windows, and Linux platforms.
The innovative "EZ Dashboard" solves this problem by allowing peripheral devices to communicate with the web browser on the host computer. A simulated file system on the peripheral device presents an HTML file to a computer browser. Users can press buttons or enter text on the webpage, establishing two-way communication between the browser and the peripheral device by encoding command messages into a sequence of read operations, thereby bypassing operating system limitations. For example, the command LED_ON is translated into disk accesses to the file /root_path/L/E/D/_/O/N/0.TXT. The peripheral firmware processes the block numbers requested by the host operating system and recovers the command code sent by the webpage.
At first glance, it may seem that deeply nested file paths require huge amounts of disk space. However, all directory and link information is created dynamically and does not require physical storage, except for the HTML file. In the demonstration video, the simple LED control application consumes only 14 KB Flash memory for the emulated file system and 14 KB SRAM working memory.
With EZ Dashboard, a system designer can take advantage of the rich capabilities of HTML to create sophisticated user interfaces that work with any browser on any operating system. HTML files included with peripheral devices expand the possibilities for device configuration, maintenance, monitoring and emergency rescue without the need for expensive hardware or platform-dependent apps or drivers.
The EZ Dashboard concept is patented in the United States and China*. It's completely free for non-commercial use. For a commercial license please contact us today.
* US patent #10042947, CN patent #105718210
Learn more >>>
Designing and providing an interface for people to interact with embedded systems is always a challenge. Some products may have buttons and LCDs, which may be more challenging to use as devices get smaller. Wireless connections via Wi-Fi or Bluetooth are common, but come at the cost of hardware and software complexity, and require an app for each of the Android, iOS, Windows, and Linux platforms.
The innovative "EZ Dashboard" solves this problem by allowing peripheral devices to communicate with the web browser on the host computer. A simulated file system on the peripheral device presents an HTML file to a computer browser. Users can press buttons or enter text on the webpage, establishing two-way communication between the browser and the peripheral device by encoding command messages into a sequence of read operations, thereby bypassing operating system limitations. For example, the command LED_ON is translated into disk accesses to the file /root_path/L/E/D/_/O/N/0.TXT. The peripheral firmware processes the block numbers requested by the host operating system and recovers the command code sent by the webpage.
At first glance, it may seem that deeply nested file paths require huge amounts of disk space. However, all directory and link information is created dynamically and does not require physical storage, except for the HTML file. In the demonstration video, the simple LED control application consumes only 14 KB Flash memory for the emulated file system and 14 KB SRAM working memory.
With EZ Dashboard, a system designer can take advantage of the rich capabilities of HTML to create sophisticated user interfaces that work with any browser on any operating system. HTML files included with peripheral devices expand the possibilities for device configuration, maintenance, monitoring and emergency rescue without the need for expensive hardware or platform-dependent apps or drivers.
The EZ Dashboard concept is patented in the United States and China*. It's completely free for non-commercial use. For a commercial license please contact us today.
* US patent #10042947, CN patent #105718210
Learn more >>>
Read full article
Hide full article
Discussion (2 comments)
Vladimir I. Yershov 1 year ago
U even did not test this crasy idea
Build started: Project: ROFS
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\arm\Keil_v5_536\ARM\ARMCC\Bin'
Build target 'MCBSTM32F400 FS'
compiling system_stm32f4xx.c...
"no source": Error: #5: cannot open source input file "Open407\system_stm32f4xx.c": No such file or directory
Open407\system_stm32f4xx.c: 0 warnings, 1 error
compiling stm32f4xx_fsmc.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c: 0 warnings, 1 error
compiling misc.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\misc.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\misc.c: 0 warnings, 1 error
compiling stm32f4xx_tim.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.c: 0 warnings, 1 error
compiling timer.c...
"no source": Error: #5: cannot open source input file "Open407\timer.c": No such file or directory
Open407\timer.c: 0 warnings, 1 error
compiling vfatsim.c...
vfatsim.c(20): error: #5: cannot open source input file "memory.h": No such file or directory
#include "memory.h"
vfatsim.c: 0 warnings, 1 error
compiling stm32f4xx_gpio.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c: 0 warnings, 1 error
compiling stm32f4xx_exti.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c: 0 warnings, 1 error
compiling stm32f4xx_can.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.c: 0 warnings, 1 error
compiling stm32f4xx_rtc.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.c: 0 warnings, 1 error
compiling stm32f4xx_pwr.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.c: 0 warnings, 1 error
assembling startup_stm32f4xx.s...
startup_stm32f4xx.s: error: A1023E: File "Open407\startup_stm32f4xx.s" could not be opened: No such file or directory
compiling stm32f4xx_usart.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.c: 0 warnings, 1 error
compiling main.c...
D:\arm\Keil_v5_536\ARM\INC\ST\STM32F4xx\stm32f4xx.h(106): error: #35: #error directive: "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
#error "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
main.c: 0 warnings, 1 error
compiling stm32f4xx_spi.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.c: 0 warnings, 1 error
compiling stm32f4xx_syscfg.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.c: 0 warnings, 1 error
compiling stm32f4xx_rcc.c...
"no source": Error: #5: cannot open source input file "..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.c": No such file or directory
..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.c: 0 warnings, 1 error
compiling keys.c...
"no source": Error: #5: cannot open source input file "Open407\keys.c": No such file or directory
Open407\keys.c: 0 warnings, 1 error
compiling usart.c...
"no source": Error: #5: cannot open source input file "Open407\usart.c": No such file or directory
Open407\usart.c: 0 warnings, 1 error
compiling LED.c...
"no source": Error: #5: cannot open source input file "Open407\LED.c": No such file or directory
Open407\LED.c: 0 warnings, 1 error
compiling config.c...
"no source": Error: #5: cannot open source input file "Open407\config.c": No such file or directory
Open407\config.c: 0 warnings, 1 error
compiling usbd_STM32F4xx_FS.c...
D:\arm\Keil_v5_536\ARM\INC\ST\STM32F4xx\stm32f4xx.h(106): error: #35: #error directive: "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
#error "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
usbd_STM32F4xx_FS.c: 0 warnings, 1 error
compiling usbd_STM32F4xx_HS.c...
D:\arm\Keil_v5_536\ARM\INC\ST\STM32F4xx\stm32f4xx.h(106): error: #35: #error directive: "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
#error "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
usbd_STM32F4xx_HS.c: 0 warnings, 1 error
compiling usbd_user_msc.c...
usbd_user_msc.c(16): error: #5: cannot open source input file "memory.h": No such file or directory
#include "memory.h"
usbd_user_msc.c: 0 warnings, 1 error
".\Obj\TESTTOOL.axf" - 24 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed: 00:00:01
Chichou Lin 1 year ago
My build environment (It's quite old):
Tool Version Numbers:
Toolchain: MDK-ARM Standard Version: 4.71.0.0
Toolchain Path: C:\Keil\ARM\BIN40
C Compiler: Armcc.Exe V4.1.0.894
Assembler: Armasm.Exe V4.1.0.894
Linker/Locator: ArmLink.Exe V4.1.0.894
Librarian: ArmAr.Exe V4.1.0.894
Hex Converter: FromElf.Exe V4.1.0.894
CPU DLL: SARMCM3.DLL V4.71.0.0
Dialog DLL: DCM.DLL V1.10.0.0
Target DLL: UL2CM3.DLL V1.150.9.0
Dialog DLL: TCM.DLL V1.14.1.0