Comments (35)
According to @andy-shev
The MCU is not supported right now until forward ported
from meta-intel-edison.
alright.
from meta-intel-edison.
And for the record I'm not willing to enable it at all. It has a lot of problems, in particular with pin control since the original (Linux kernel) solution is not compatible with upstream.
from meta-intel-edison.
what a pity that a 100Mhz quark MCU was abandoned.
from meta-intel-edison.
what a pity that a 100Mhz quark MCU was abandoned.
Agree, and unfortunately I can't do anything about it. I can advise, though not recommend to follow it (waste of time for cancelled products if you are not Big Customer), to complain to Intel thru the official channels.
from meta-intel-edison.
The idea was brilliant. Would have been great to run Zephyr on the MCU. Maybe it will return in a future product.
from meta-intel-edison.
waste of time for cancelled products
Reasonably~but why we devoted ourself with enthusiasm to maintain this cancelled product(intel edison), and add many new features to it, such as new kernel, patched u-boot, ACPI, 64bit, etc.
from meta-intel-edison.
waste of time for cancelled products
Reasonably~but why we devoted ourself with enthusiasm to maintain this cancelled product(intel edison), and add many new features to it, such as new kernel, patched u-boot, ACPI, 64bit, etc.
First of all, just for fun and there also few more useful (for me personally as an Intel employee) giveaways.
from meta-intel-edison.
me too, just for fun , haha~
from meta-intel-edison.
@andy-shev as I was stuck in acpi,u-boot and kernel, I would like to port the old implement to current , could you mind to help me as a guides.
from meta-intel-edison.
@xlla, simplest way is to take PSH "driver" as is from stock image (sources) and compile it in the new kernel environment. It should work like the original one. Somewhere I even had a patch, I can share (tell me your email for that). The pin muxing issue is there, though. That's why enabling pin muxing has much more priority over PSH, besides the fact the PSH is not convenient to use due to absence of Zephyr kernel for it.
from meta-intel-edison.
@andy-shev sorry for the late reply, I have sent a email to you.
I have final rescued my development environment and migrate to a ssd, hope it will speed up build process.
I have prepare a workspace for kernel module development, plan to migrate module intel_mcu.
from meta-intel-edison.
I have sent you the patch (it's basically compound of what we used to have in stock kernel. Feel free to clean up and send a PR. Maybe @htot will include it in the kernel. (Note, it's not upstreamable material from my perspective, though you always may try to go directly to upstream with it)
from meta-intel-edison.
I have compiled it into kernel, flash to ota partition and boot from sdcard.
it works but very lag.
Kernel command line: "tty1=console=ttyS2,115200n8 root=/dev/mmcblk1p1 rootfstype=ext4 systemd.unit=multi-user.target hardware_id=00" Magic signature found Starting kernel ... Application available at (physical) address 0x04819000 VRL mapped to 0xff217000 App size = 11508 bytes App Authentication feature is disabled! Resetting IPC *** Ready to receive application *** Poky (Yocto Project Reference Distro) 2.7.3 edison ttyS2
cpu load up to 43% and keep on.
Mem: 161068K used, 816884K free, 576K shrd, 8356K buff, 104880K cached CPU: 4% usr 54% sys 0% nic 0% idle 41% io 0% irq 0% sirq Load average: 17.99 17.61 12.77 12/108 750 Mem: 161068K used, 816884K free, 576K shrd, 8356K buff, 104880K cached CPU: 4% usr 52% sys 0% nic 0% idle 43% io 0% irq 0% sirq Load average: 17.99 17.62 12.80 12/108 751 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 89 2 root RW 0 0% 43% [irq/24-intel_ps] 751 661 root R 3764 0% 4% top 656 655 root S 26952 3% 0% (sd-pam) 1 0 root D 26156 3% 0% {systemd} /sbin/init tty1=console=ttyS2,115200n8 root=/dev/mmcblk1p1 rootfstype=ext4 systemd.unit=m 498 1 root S 22248 2% 0% /usr/sbin/rngd -f -r /dev/hwrng
dmesg flood with
[ 509.134958] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135010] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135136] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135206] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135344] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135473] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135542] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135593] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135709] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6 [ 509.135763] intel_psh_ipc 0000:00:16.0: Ignore message from channel 6
intel_mcu node exist
root@edison:~# ls /sys/devices/platform/intel_mcu -al total 0 drwxr-xr-x 4 root root 0 Mar 18 17:38 . drwxr-xr-x 17 root root 0 Mar 18 17:38 .. --w------- 1 root root 4096 Mar 18 17:44 control lrwxrwxrwx 1 root root 0 Mar 18 17:46 driver -> ../../../bus/platform/drivers/intel_mcu -rw-r--r-- 1 root root 4096 Mar 18 17:46 driver_override -r-------- 1 root root 4096 Mar 18 17:42 fw_version -rw------- 1 root root 4096 Mar 18 17:43 log_level -r--r--r-- 1 root root 4096 Mar 18 17:46 modalias drwxr-xr-x 2 root root 0 Mar 18 17:46 power lrwxrwxrwx 1 root root 0 Mar 18 17:38 subsystem -> ../../../bus/platform drwxr-xr-x 5 root root 0 Mar 18 17:38 tty -rw-r--r-- 1 root root 4096 Mar 18 17:38 uevent
if I missing something or default mcu app try to send something that new kernel can't understand?
from meta-intel-edison.
I upload a simple mcu app just read from tty and print debug info, to avoid involve any mux/pin.
I can't get any message from ttymcu0
root@edison:/mnt/sdcard/test# echo debug > /sys/devices/platform/intel_mcu/log_level -sh: echo: write error: Operation not permitted root@edison:/mnt/sdcard/test# cat /sys/devices/platform/intel_mcu/log_level cat: /sys/devices/platform/intel_mcu/log_level: Operation not permitted root@edison:~# cat /dev/ttymcu0 ^C root@edison:~# echo "start" > /dev/ttymcu0 root@edison:~# cat /dev/ttymcu0 ^C root@edison:/mnt/sdcard/test# cat /proc/interrupts | grep intel_psh_ipc 24: 33181819 0 IO-APIC 47-fasteoi intel_psh_ipc
from meta-intel-edison.
after clear interrupt flags, no more complain messages, cpu load drop to 0,
root@edison:~# cat /proc/interrupts | grep intel_psh_ipc 24: 1 0 IO-APIC 47-fasteoi intel_psh_ipc root@edison:~#top CPU: 0% usr 0% sys 0% nic 99% idle 0% io 0% irq 0% sirq
but still can't access log_level
root@edison:~# cat /sys/devices/platform/intel_mcu/log_level cat: /sys/devices/platform/intel_mcu/log_level: Operation not permitted root@edison:~# ls -al /sys/devices/platform/intel_mcu/log_level -r--r--r-- 1 root root 4096 Mar 21 18:21 /sys/devices/platform/intel_mcu/log_level
from meta-intel-edison.
I don't know how to debug kernel module.
after add many trace log, I finally found intel_mcu was load before intel_psh_ipc, so something not prepared correctly.
how to force load module_platform_driver A after module_pci_driver B?
should I move intel_mcu files from drivers/hwmon into drivers/platform/x86 , and change the appearance order in Makefile ?
from meta-intel-edison.
Bingo!
after adjust those modules load senquence, I got it.
It is very exciting even just seen a few logs from MCU. @htot
root@edison:~# cat /sys/devices/platform/intel_mcu/log_level debug
Many thanks to @andy-shev !
from meta-intel-edison.
Don't forget to send a PR when you get stuff to work!
from meta-intel-edison.
look carefully at those logs and compare with source code, the sequence was RANDOM!
from meta-intel-edison.
@htot I will.
it now on bare status, I need to check every point with edison-mcusdk.
first of all, I want to config usb0 to 192.168.2.15 automatically, since each time mcusdk upload an app, it will reboot edison, then I lost usb ethernet.
I have created a service to do that, but failure on reboot.
root@edison:~# systemctl status network-gadget-init.service ● network-gadget-init.service - USB Ethernet gadget Loaded: loaded (/lib/systemd/system/network-gadget-init.service; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2020-03-23 00:17:16 CST; 41s ago Process: 573 ExecStart=/bin/sh -c ifconfig usb0 192.168.2.15 netmask 255.255.255.0 (code=exited, status=255/EXCEPTION) Main PID: 573 (code=exited, status=255/EXCEPTION) Mar 23 00:17:15 edison systemd[1]: Starting USB Ethernet gadget... Mar 23 00:17:15 edison sh[573]: SIOCSIFADDR: No such device Mar 23 00:17:15 edison sh[573]: usb0: ERROR while getting interface flags: No such device Mar 23 00:17:15 edison sh[573]: SIOCSIFNETMASK: No such device Mar 23 00:17:16 edison systemd[1]: network-gadget-init.service: Succeeded. Mar 23 00:17:16 edison systemd[1]: Started USB Ethernet gadget.
should I wait some service then launch my service?
I don't know which service will prepare usg gadget.
or add this in to service unit file?
ExecStartPre=-/bin/sh -c "echo 'connect' > /sys/class/udc/dwc3.0.auto/soft_connect"
another question, when mcusdk upload an app, it will reboot edison; it seems edison must be reboot when mcu app upload, but I notice these is a service will upload mcu app, why that upload do not need a reboot?
root@edison:~# systemctl status mcu_fw_loader.service ● mcu_fw_loader.service - Daemon to load edison mcu app binary Loaded: loaded (/lib/systemd/system/mcu_fw_loader.service; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2020-03-23 00:17:16 CST; 16min ago Process: 582 ExecStart=/etc/intel_mcu/mcu_fw_loader.sh (code=exited, status=0/SUCCESS) Main PID: 582 (code=exited, status=0/SUCCESS) Mar 23 00:17:15 edison systemd[1]: Started Daemon to load edison mcu app binary. Mar 23 00:17:16 edison systemd[1]: mcu_fw_loader.service: Succeeded.
If I first power on edison, this service will upload mcu app, then edison need reboot immediately, and the app will upload again, and need another reboot.
should I disable this service , manual upload mcu app , do a reboot to do the test?
from meta-intel-edison.
Network: https://edison-fw.github.io/meta-intel-edison/4.2-networking.html#gadget
The network should already be up, no service needed. The connection is made from the host side.
MCU problems: I don't now, never tried, not even with the factory firmware.
from meta-intel-edison.
I have execute those commands in that article, and I found every time I reboot the Edison, only need manual call
ifconfig usb0 192.168.2.15 netmask 255.255.255.0
then usb ethernet would work.
Since I changed gadget protocol to RNDIS, on mac host, network was recognized automatically.
The network should already be up, no service needed
it was up when I login in, but not got an IP like this.
root@edison:~# ifconfig usb usb0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:f0 inet6 addr: fe80::a8bb:ccff:fedd:eef0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:20285 errors:0 dropped:0 overruns:0 frame:0 TX packets:38 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:828488 (809.0 KiB) TX bytes:6518 (6.3 KiB)
would you tell me which service load /usr/bin/conf-gadget.sh, so I can let my service wait after it.
from meta-intel-edison.
or another service had execute those command auto
connmanctl enable gadget services connect gadget_aabbccddeef1_usb
each time I power on edison or reboot it, wifi and usb0 was got connected.
root@edison:~# connmanctl connmanctl> services *AO wifissid wifi_fc23456cc_6970617135_managed_psk * Wired gadget_aabbccddeef0_usb connmanctl>
wifi was fine, since dhcp on router, but usb0 need manual assign IP.
from meta-intel-edison.
but usb0 need manual assign IP.
No that is wrong. usb gets ip from host. But you need to tell host to have dhcp server (shared ip connection). Reed instructions again.
Also usb should have power enabled automatically.
from meta-intel-edison.
to emulate the original Edison's behavior, I found it was called by udev rules, so I invoke my service from udev rules too, it works.
[ OK ] Started Hostname Service. Poky (Yocto Project Reference Distro) 2.7.3 edison ttyS2 edison login: root Last login: Wed Mar 25 00:13:23 CST 2020 on ttyS2 root@edison:~# ifconfig usb0 usb0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:f0 inet addr:192.168.2.15 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::a8bb:ccff:fedd:eef0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:59 errors:0 dropped:0 overruns:0 frame:0 TX packets:43 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:19119 (18.6 KiB) TX bytes:9168 (8.9 KiB) root@edison:~# systemctl status sys-subsystem-net-devices-usb0.device ● sys-subsystem-net-devices-usb0.device - Merrifield USB Device Controller (OTG) Loaded: loaded Active: active (plugged) since Wed 2020-03-25 00:16:19 CST; 38s ago Device: /sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget/net/usb0 root@edison:~# systemctl status [email protected] ● [email protected] - USB Gadget ifconfig Loaded: loaded (/lib/systemd/system/[email protected]; static; vendor preset: enabled) Active: active (exited) since Wed 2020-03-25 00:16:20 CST; 1min 1s ago Process: 613 ExecStart=/sbin/ifconfig usb0 192.168.2.15 netmask 255.255.255.0 (code=exited, status=0/SUCCESS) Main PID: 613 (code=exited, status=0/SUCCESS) Mar 25 00:16:19 edison systemd[1]: Starting USB Gadget ifconfig... Mar 25 00:16:20 edison systemd[1]: Started USB Gadget ifconfig.
from meta-intel-edison.
Sure, there may be multiple ways to do the same thing:
root@edison:~# connmanctl
connmanctl> technologies
..
/net/connman/technology/gadget
Name = Gadget
Type = gadget
Powered = False
Connected = False
Tethering = False
connmanctl> enable gadget
connmanctl> connect gadget_aabbccddeef1_usb
connmanctl> services
* O Wired gadget_aabbccddeef1_usb
connmanctl> quit
root@edison:~# ifconfig
..
usb0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:f1
inet addr:10.42.0.221 Bcast:10.42.0.255 Mask:255.255.255.0
inet6 addr: fe80::a8bb:ccff:fedd:eef1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:340101 errors:0 dropped:218 overruns:0 frame:0
TX packets:25306 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:509201080 (485.6 MiB) TX bytes:2443903 (2.3 MiB)
..
root@edison:~# iperf3 --server
+---on host ------------
ferry@delfion:~$ iperf3 --client edison.local
Connecting to host edison.local, port 5201
[ 5] local fe80::b87a:5bf5:7bd6:5ea4 port 52958 connected to fe80::a8bb:ccff:fedd:eef1 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 24.9 MBytes 209 Mbits/sec 0 1.01 MBytes
then after reboot it is already powered, but not connected. For that:
connmanctl> config gadget_aabbccddeef1_usb --autoconnect yes
connmanctl> services
*A Wired gadget_aabbccddeef1_usb
A means autoconnect.
from meta-intel-edison.
in my case, after reboot, no need do anything, it is Wired without "A" prefix.
my udev rules will config ip automatic, so does not need host run dhcp service.
as there is showed "Connected = False", I can do connection test successful.
root@edison:~# connmanctl connmanctl> services *AO ssid wifi_xxxxx_managed_psk * Wired gadget_aabbccddeef0_usb phone bluetooth_xxxx connmanctl> technologies /net/connman/technology/gadget Name = Gadget Type = gadget Powered = True Connected = False Tethering = False root@edison:~# iperf3 --server ----------------------------------------------------------- Server listening on 5201
on host
==> Pouring iperf3-3.7_1.high_sierra.bottle.1.tar.gz 🍺 /usr/local/Cellar/iperf3/3.7_1: 11 files, 380.4KB rmbp:workspace-mcu xlla$ iperf3 --client 192.168.2.15 Connecting to host 192.168.2.15, port 5201 [ 5] local 192.168.2.20 port 58492 connected to 192.168.2.15 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 26.9 MBytes 226 Mbits/sec [ 5] 1.00-2.00 sec 27.0 MBytes 227 Mbits/sec [ 5] 2.00-3.00 sec 26.8 MBytes 225 Mbits/sec
from meta-intel-edison.
That's right.
In fact you are 'manually assigning an address' but through a script. That means your host doesn't know the address edison or edison.local unless you also add it to /etc/hosts, right?
from meta-intel-edison.
yes! that's the original Edison board's behavior, at that time, every tutorial and manual just use that special IP for edison usb ethernet. intel xdk/ mcusdk/iot all are try to connect edison use that IP.
I am lazy to change those app.
from meta-intel-edison.
I see that's fine.
Can you create a PR for changing to rndis?
from meta-intel-edison.
In my adventure, I'v change a lot of files to get things run, I don't know how to pick them out individually right now, may I create a PR with all of them, or create a clean PR when I have learned how to do that in the future.
I will push it here temporary in period.
from meta-intel-edison.
I use qgit
to visually select files to create a commit.
But I think Andy pointed out you can undo 1 commit with git reset HEAD~1
, the files will be uncommited but not erased.
Each commit (git commit) will be done on the files that you added (git add).
https://www.atlassian.com/git/tutorials/saving-changes/git-commit
We really don't want to have a single commit with everything in it. It's impossible to understand / debug / rollback.
from meta-intel-edison.
The ProGit Book is very good and free: https://git-scm.com/book/en/v2
from meta-intel-edison.
In my adventure, I'v change a lot of files to get things run, I don't know how to pick them out individually right now, may I create a PR with all of them, or create a clean PR when I have learned how to do that in the future.
I will push it here temporary in period.
Are you still working on this?
There is quite some useful stuff in your branch like enable rndis. Did you get the mcu to work in the end?
from meta-intel-edison.
Related Issues (20)
- BTRFS rebooted crash HOT 2
- boot failure HOT 12
- Preempt-RT support HOT 4
- ACPI table is not loaded HOT 8
- Integration with Azure HOT 1
- How to use PWM mode? HOT 5
- altering the partition table prevents subsequent dfu updates HOT 3
- requirement for sudo to use flashall.sh HOT 4
- `make debian` broken on master and dunfell HOT 4
- SD card does not work on dunfell branch HOT 69
- SD card not detected properly in U-Boot HOT 9
- Can't use "configure_edison --setup" HOT 9
- Intel Edison can't boot new flashed image HOT 3
- There is no issue with the network, but numactl cannot be downloaded. HOT 2
- Initramfs unpacking failed: invalid magic at start of compressed archive HOT 4
- Issue Building Sumo Branch HOT 1
- Expired gpg keys HOT 3
- [Kirstone] List of required packages does not match YP
- npm i mraa fails HOT 3
- [Kirkstone] missing elfutils-native while building linux-yocto HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from meta-intel-edison.