一样开头先上成果~
完整影片可见:
https://twitter.com/Ruinland_Mask/status/1445487285529501707
之前的问题在於,LiteX-UART的chardev没有出现在新的rootfs的dev底下,kernel自己可以存取liteuart没差,但是getty要存取,那对应的chardev就要存在。
然而...... LiteX-UART的major跟minor都是0
:
static struct uart_driver liteuart_driver = {
.owner = THIS_MODULE,
.driver_name = "liteuart",
.dev_name = "ttyLXU",
.major = 0,
.minor = 0,
.nr = CONFIG_SERIAL_LITEUART_MAX_PORTS,
#ifdef CONFIG_SERIAL_LITEUART_CONSOLE
.cons = &liteuart_console,
#endif
};
简单说这不是想让你自己去mknod出来的东西。
解法有很多,改code是种方式,但是,RISC-V Linux有招祖传瓮底小东西 — — SBI。
在过去,因为RISC-V CPU的开发都在FPGA或模拟器上,一些peripheral可能都还在半残状态,所以SBI层的legacy版本留着console的getchar跟putchar SBI call、可以让程序有个简单暴力的文字界面可以互动;而Linux原本在过去Xen虚拟机时代时,留有HVC (Hypervisor Virtual Console)的界面。两者一拍即合,叫做RISCV_SBI_HVC。
在懒得改code下,火速修了一下 Alpine Init的逻辑,叫它不要去折腾其他tty,就大功告成了,不会再狂喷找不到 /dev/liteuart
给getty去attach。
>>: Flutter基础介绍与实作-Day22 旅游笔记的实作(3)
接续昨天要做的功能,我们要在discord上直接输入中文就能查询到物品的拍卖价格网址,今天主要是介绍...
今天,要来产生Fragment。 首先按File再点选 Kotlin Class/File 接着取名...
问题回答 scoped 属性的作用是避免父元件的 CSS 样式会污染到子元件的 CSS 样式。Dee...
特徵工程可以分为两大部分,一是根据现有的资料特徵进行筛选,选出较有影响力的特徵进行训练,另一个是根据...
续上篇,Day6 - 读 Concurrency is not Parallelism - Rob ...