![](https://img-blog.csdnimg.cn/20200326114946955.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
sylixos学习
文章平均质量分 64
sylixos学习,萌新一枚
hua-white
这个作者很懒,什么都没留下…
展开
-
PMON 与 U-Boot 下的网络调试
近期工作上的bug比较多,故整理一下。PMON 下的便捷调试命令因为PMON 下没有内建 mii 命令,所以有些读 PHY 内部寄存器的操作很不容易实现。读 d4 0xc0000000写 m2 0xc0000000 0x080c龙芯2K1000的 MAC 控制器是 DesignWire 设计的,驱动是 stmicro 编写的,查询dw手册得知:MAC 寄存器基址 + 0x10是 MAC 控制器通过 MDIO 读取 PHY 内部寄存器的 控制寄存器,例如:PMON> d4 0xc00000原创 2021-03-25 19:38:37 · 1317 阅读 · 0 评论 -
关于TCP的一些事
我之前关于网络速度优化一直是左调一点,右调一点参数,譬如,调大TCP窗口大小,调大TCP ACK回应频率等,但一直是在隔靴搔痒,并且,我自己写的网卡驱动,在不经过协议栈+报文校验的情况下是可以跑满带宽的,但是在实际运行时就总是与理想相差甚远,甚至一度怀疑驱动写的是不是有问题(当然驱动写的是有一些问题),于是费尽周折,对比代码与linux之间的差异,发现还是才疏学浅。言归正传,TCP窗口大小是决定速度的大小的重要因素之一,于是某一日,在搜索时,无意地看到了TCP HighSpeed这个文件TCP Hig原创 2021-03-10 14:23:07 · 102 阅读 · 0 评论 -
GJB
GJB 7704-2012GJB 7704-2012原创 2020-12-09 14:03:33 · 251 阅读 · 0 评论 -
网络速率调试心得
如果你的测试程序优先级和网络协议栈优先级不对等的话,有可能出现严重丢包,原因如下:网络驱动在接收到报文数据之后提交给协议栈,若此时协议栈优先级高于测试程序,那么测试程序接收报文会一直被阻塞,此时体现在结果上就是丢包,这种我比较喜欢称作“优先级丢包”。若“优先级丢包”没有发生,即协议栈优先级等于测试程序,那么此时若还丢包,可以试图判断下,内存分配是否有问题,如果网络驱动在接收到报文之后一直没办法将报文放到内存中,也会产生丢包。但是这种丢包有触发条件,首先是要保证在网络测试了一段时间之后才会发生,一般不会原创 2020-09-17 10:52:24 · 234 阅读 · 0 评论 -
深入理解以太网PHY自协商及调试心得
最近调某个phy芯片,心态爆炸,不过好歹最后有个好结果。自协商基本原理自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干原创 2020-08-28 17:26:35 · 24044 阅读 · 12 评论 -
DWMAC网卡的相关兼容
dwmac是众多网卡驱动中的一个通用驱动系列,里面包含了大部分能用到的多种系列网卡stm32sunxiipq806xlpc18xxstifpga…其实本身这套驱动系列架构较为成熟,已将各种操作抽象成类,但是对于一个普通的项目来说并不需要支持如此多的网卡,故需要针对不同的硬件进行优化。准确地来说stmmac层封装了一些纯底层接口并方便上层调用,但是一个简单的项目并不需要如此多的配置,也并不需要单独开辟一个结构体为其赋值等。这套驱动的入口就是各种dwmac-xxxxxx的网卡类型入口,需原创 2020-08-03 18:04:36 · 3233 阅读 · 0 评论 -
从龙芯2K1000看MIPS中断架构
以龙芯2k为例,其I/O中断寄存器分为两种:中断控制寄存器中断路由寄存器龙芯2k(以下简称ls2k),ls2k在中断分配的区域又细分了几个模块Mailbox:中断队列寄存器INTISR:中断状态寄存器,取决于核号SET/EN/CLR/STATUS:设置/使能状态/清除/查询状态寄存器intbounce/intauto:中断发布寄存器杂项寄存器:isr/en/set/clr:中断状态/使能状态/使能/清除寄存器ls2k的中断路由寄存器具体是干什么的?CPUxMailbox0Mailb原创 2020-07-07 11:42:30 · 1342 阅读 · 0 评论 -
龙芯2k调试记录
记:搞到了一块龙芯的2k的板子,然后开始写elf,随即调试电脑蓝屏,重启,又蓝屏数十次。错误记录:串口不停发送RX接收句柄“调试信息”,但发送速率过快,导致电脑 串口驱动文件报错,进而蓝屏死机。插拔网线后进行数据传输,同样发送RX接收句柄“调试信息”,发送速率过快导致电脑 串口驱动文件报错,进而蓝屏死机。未完待续软件问题调试时采用的是putty,随即发生蓝屏,因此更换成了SSCOM32,同时串口也不停发送RX接收句柄“调试信息”,发送速率过快,但未导致电脑死机,初步判定电脑死机为putt原创 2020-07-06 12:51:46 · 919 阅读 · 0 评论 -
优秀的思想总是相似的
前几天学校优秀毕业论文答辩,无意间看到了一个很熟悉的名词——管道当时在台上的是另一个已经签约在某直播平台工作的学生,讲述的毕业设计好像是说网络直播通信方面的东西。我之前在研读SylixOS应用开发手册时也看到了这一章节。其实对于不同的进程间的通信方式,一般有以下几种:管道、命名消息队列、命名信号量、共享内存、信号等其实我一直觉得,有些难以理解的东西可以放在一个大背景中去了解。在操作系统设计的初期,应该不会涉及到很多很多的进程间相互通信,只有少数的不同进程通信,那么信号量则是不二之选,配置简单,调原创 2020-06-19 11:39:42 · 192 阅读 · 0 评论 -
dts移植与编写
第一步就是要为这个模型机构建一个基本结构,这是一个有效的设备树最基本的结构。在这个阶段你需要唯一的标识该机器。/{ model = "sun50iw6"; compatible = "arm,sun50iw6p1"; ...};compatible 指定了系统的名称。它包含了一个“<制造商>,<型号>”形式的字符串。重要的是要指定一个确切的设备,并且包...原创 2020-04-20 17:51:06 · 384 阅读 · 0 评论 -
Device Tree引发的BSP和驱动变更
有了Device Tree后,大量的板级信息都不再需要,譬如过去经常在arch/arm/plat-xxx和arch/arm/mach-xxx实施的如下事情:注册platform_device,绑定resource,即内存、IRQ等板级信息。透过Device Tree后,形如 static struct resource xxx_resources[] = { [0] = { ...原创 2020-04-14 10:47:38 · 313 阅读 · 0 评论 -
dts,dtb,dtc
dtc工具安装apt-get install device-tree-compilerdtc dtc --help由dts生成dtb:dtc -I dts -O dtb -o devicetree.dtb jz2440.dts由dtb生成dtsdtc -I dtb -O dts -o tmp.dts devicetree.dtbdtc --helpdtd...原创 2020-04-09 15:11:36 · 1124 阅读 · 0 评论 -
dts部分OF_API
用来查找在dtb中的根节点unsigned long __init of_get_flat_dt_root(void)根据deice_node结构的full_name参数,在全局链表of_allnodes中,查找合适的device_nodestruct device_node *of_find_node_by_path(const char *path)例如:struct d...原创 2020-04-09 11:31:43 · 238 阅读 · 0 评论