The youyeetoo X1 is an x86-based single board computer (SBC) launched by youyeetoo.com. It supports full-featured versions of Windows and Linux, which is designed for the AIOT and automation market. With its compact size (115mm * 75mm) and high performance (11th Gen Intel CPU N5105), it offers a range of interfaces commonly used in AIOT applications, including 3x UART, 2x HDMI, 2x USB 3.0, 4x USB 2.0, 1x I2C, 1xSPI, and 5x GPIO. It also supports a 7-inch MIPI touch screen. The recommended model (8GB DDR + 128GB eMMC) is competitively priced at $129, making it an ideal choice for AI edge computing.
|Intel® Celeron 11'th Gen Jasper Lake N5105 (CPU Frequency: 2.0~2.9GHz，Quad-core 10nm TDP 10W)
|Intel®UHD Core Graphics(Frequency:450 - 800MHz)
|Onboard 4GB / 8GB /16GB LPDDR4 (optional) recommend 8GB
|eMMC(V5.1): 0/64G/128G/256G optional
M.2 Slots ：NVMe 2280 SSD(PCIE3.0) or M.2 SATA 2280 SSD
(Support PCle Gen 3.0 x4 lanes NVMe 1.4，compatible with PCle Gen 3.0 x2 NVME)
SATA FPC Slots：SATA3 hard disk can be expanded through SATA adapter board（need SATA adapter board）
Micro SD(TF) : Supports common SD cards to Extended storage
|Ethernet: RJ45 Gigabit Ethernet * 1
Wireless: WIFI5+BT5.0 / WIFI6+BT5.2 Expansion via M.2 slot, optional
4G LTE: M.2 E-key slot expansion,4G datamodule such as the EC20/EC25(need 4G adapter board)
Micro HDMI：HDMI2.0 4K/60Hz
MIPI FPC ：Support Youyeetoo MIPI7LCD(1024 * 600 ) LCD module Multi TOUCH
|USB-A: USB2.0 * 2 (Limit 1.45A total) Two interfaces share 1.45A
USB-A: USB3.0 * 2 (Limit 1.45A total)Two interfaces share 1.45A
USB Pin: USB2.0 * 2 (Limit 1.45A total)Two interfaces share 1.45A
|3.5 Headphone jack(4line),headset with MIC
SPK XH2.0 PIN: Onboard 3W power amplifier,matching 8 ohm speakers
HDMI Audio Output (Audio can be output to TV via HDMI)
|1. Onboard digital microphone MIC:with noise reduction function(default)
2. Analong MIC: SH0.8mm 2PIN head on the back, 3.3V analog microphone (Switch MIC lnput needs to replace BlOS)
|M.2 M Key: NVME SSD/M.2 SATA SSD (M-key) 2280
M.2 E Key: WIF15+BT5.0/WIFI6+BT5.2 Module 2230 or 4G adapter board to support 4G LTE module (E-key)
|UART TTL * 3 serial port ， Connect RS232 or RS485 /CAN modules can also be use
|IIC * 1 XH2.0 4PIN，Provide windows/linux operation example tutorial Default 3.3V
|SPI* 1 XH2.0 5PIN，Provide windows/linux operation example tutorial Default 3.3V
|GPIO * 5 XH2.0 6PIN，Provide windows/linux operation example tutorial Default 3.3V
|Onboard LED * 2，Parallel 4PIN pin lead, XH2.0, Default 3.3V (defaultred flashes and green off)(Provide a tutorial API interface to control heartbeat flickering)
|Power key * 1 Reset key * 1(restore BIOS setting)
|RTC battery Seat : SH1.25 2PIN CR2032 button battery or other 3.3V battery
RTC consumes about 35mAh per year
|Turn on * 1 without pressing the power button(can be set in BIOS)
|12V DC socket(5.5*2.1): Recommended power adapter 12V3A or XH2.54 2PIN Power socket
|115 * 75 mm
|FAN seat specification:SH1.0 4PIN Default heatsink fan 5V/0.2A power Consumption
|Windows 10/11Linux ubuntu / Linux Debian
|NFC device.data transmission with mobile phones/Card Reader, Compatible with android/lOS phones,youyeetoo.com provides examples
|Implemented via standard windows API
|CPU temperature reading
|Implemented via standard windows API
|CPU Fan Speed Adjustment
|Implemented via standard windows API Fan speed requlation
|Support AC/BT protocol 30W POE module, 60W support can be customized (Need POE module)
Basic Knowledge Preparation: Familiar with C/C++ programming language and understand the concepts of function pointers, callback functions and event handlers. basic use of Visual Studio.
Categorized into the WDM model and the WDF model, WDM drivers are trusted kernel-mode components, so the system provides limited checks on driver input. In contrast, the WDF model focuses on the requirements of the driver, and the framework library handles most of the interaction with the system. Microsoft recommends using the WDF model for new driver development.
The WDF model is divided into two types of driver development: KMDF kernel mode drivers and UMDF user mode drivers. We often say that the development is the KMDF kernel mode driver.
VS2022 + SDK (according to the target board system version to download) + driver toolkit WDK
VS2022 installation: select "desktop development using c++" and "Visual Studio extension development" two contents.
The SDK can be installed on the network, and the WDK can be installed on the network.
For installation, please refer to the Microsoft tutorial: https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk#download-and-install-the-windows-11-version- 22h2-wdk
Start Visual Studio.
In the startup dialog box, select "Create New Project", or select "Project" in the "New | Visual Studio File" menu. Select "Create New Project" in the startup dialog box or select "Project" from the "New | Visual Studio" File menu.
In the right pane of the Create New Project dialog box, locate and select Kernel Mode Driver (KMDF). Select Next.
Fill in the Project Name, Location and Solution Name boxes and select Create. For more information, see Writing KMDF Drivers Based on Templates.
At this point, your driver project implements the general code required by most KMDF drivers. You can now provide code specific to your device.
During the debugging phase, the target machine needs to be configured in test mode, otherwise the driver cannot be installed.
Run the following terminal command with administrator privileges: bcdedit /set testsigning on to reboot the system.
If you don't want to test anymore, exit the test mode: bcdedit /set testsigning off and reboot the system.
Compile the driver folder, copy it to the target machine, there is a file "XXX.inf" in the driver folder on the target machine, right click the mouse to install it.
Because the driver debugging and common application debugging methods are different, generally by viewing the driver process log to determine and analyze whether the driver is running normally.
Need to use Microsoft's tools.
DebugView (view ktprint print log) Download: https://learn.microsoft.com/zh-cn/sysinternals/downloads/debugview
Driver Monito (view the log of the WPP framework) download address: https://www.drivers.com/download-monitor-drivers/
When the driver debugging good, no problem, need to give the driver signature, the driver can be installed in the official mode of the system.
Driver signing: you can let Microsoft sign the driver, or let a third-party organization to help sign the driver. The price is different.
To mount an external device via I2C/SPI bus, you need to declare the device in the ASL CODE of the motherboard, so that the new device will appear in the device manager of the system.
How to add a new device will be mentioned later in the I2C/SPI/NFC development.
The target system in test mode, driver development process, do not brush the BIOS, the new device can be injected into the registry, you can carry out development and testing.
The process of injecting a new device into the registry (this process is only effective when the system is in test mode).
Tools used: 1.
1.SDK comes with asl.exe: path C:\Program Files (x86)\Windows Kits\10\Tools\SDK specific version number\x64\ACPIVerify\
2.iasl-win: download address:https://www.intel.com/content/www/us/en/download/774881/acpi-component-architecture-downloads-windows-binary-tools .html
In the target machine as administrator, run the following commands.
1) Read the BIOS configuration from the registry cache and save it to the DSDT0000.bin file.
.\asl.exe /tab=DSDT /c
2) Decompile DSDT0000.bin file, generate DSDT0000.dsl (ASL CODE file).
.\iasl.exe -ve . \DSDT0000.bin
3) Modify the DSDT0000.dsl file, add new devices to change the file
According to the actual need to add devices to the file, followed by the use of I2C/SPI/NFC in the introduction of specific examples need to add the content.
4) Compile the modified DSDT0000.dsl, which will generate DSDT0000.aml file
.\iasl.exe -ve . \DSDT0000.dsl
5) Write to registry cache
.\asl.exe /loadtable DSDT0000.aml
Bcdedit /set testsigning on
7)Reboot the system so that you can see the new device in the device manager.
To disable the ASL code, uninstall it.
key. \asl.exe /loadtable DSDT0000.aml -d
Reboot the system, and you will be back to the unadded device state.
When the new device is ready for debugging, you need to update the BISO code and re-flash the BIOS.
This tutorial is an example of how to call the hardware resources on the youyeetoo X1 motherboard in a windows application, to make it easier to control the hardware in real projects.
#update soft list
sudo apt-get update
# install make
sudo apt install make
sudo apt -y install make-guile
#install gcc g++
sudo apt -y install gcc
sudo apt -y install g++
# install cmake
sudo snap install cmake
sudo apt -y install cmake
sudo apt -y install git build-essential dkms --force-yes
sudo apt -y install vim
sudo apt -y install curl
sudo apt -y install wget