Category: 未分类

域内的PC 访问非域内的samba服务器

加入某个域内的PC 在登录samba服务器的时候,默认会在USERNAME 前加上DOMAIN\, 所以一直登录失败。登陆窗口上也无法取消加 DOMAIN\。 解决方法: 控制面板->凭据管理器(Credential Manager) -> 手动添加Windows 凭据, 这样就可以用此用户账户正常登录了。

Plans

Recently, I want to do some hardware acceleration applcations like using zynq to mining. This will help me more skillful in software and hardware combinational developments. This type of use case may be used in lot of scenes. Such hardware like DSP, VPU, GPU, neural stick and many fpga cores outside of CPU. I have
Read More »

嵌入式linux 开发中常用工具安装笔记

Samba server     # apt install samba samba-common # vim /etc/samba/smb.conf 添加: security = user [shuji] comment = share dir path = /srv/samba browseable = yes writable = yes # useradd public (不要用adduser, 否则还要禁用shell) # smbpasswd –a public # service smbd restart Samba client smbclient -L //192.168.1.10 -U dev smbclient //192.168.1.10 -U dev   nfs
Read More »

recent new tech need to analysis and learn

reverse ssh tunnel nohup ssh -NfR 2222:localhost:22 root@106.12.13.xxx -p22 expect script   strip command Some useful line editing key bindings provided by the Readline library: Ctrl-A: go to the beginning of line Ctrl-E: go to the end of line Alt-B: skip one word backward Alt-F: skip one word forward Ctrl-U: delete to the beginning of
Read More »

总结几个C 语言比较高级的编写技巧

看了一些源代码,这里总结几个不常见的,但是比较好用的C 用法。也许这些功能在C++中有扩展,但是个人基本不用C++。其实这些应该是属于预处理器的功能。若是之前没有见过,遇到时会感觉云里雾里的。 直接定义字符串: 我们可以用#define 定义字符串常量,比如: #define HELLO   “hello” 这样就相当于是: char *HELLO= “hello”; 而且使用#define 来定义的好处是可以直接拼接字符串,这些应该都是由预处理器来帮我们处理的(没有仔细考证,但想像其中原理应该是这样)。比如: #define HELLO "hello" #define WORLD "world" puts( HELLO WORLD ); 定义内存池: 在嵌入式系统中一般不用内存堆的动态分配,因为容易产生内存碎片导致大块内存分配不到(可以用带小块内存合并功能内存管理方式),或者是会因为某个模块把内存堆耗尽了导致其它模块不能工作。通常会使用内存池的方式,而且每个软件模块有自己的不同大小固定数量内存池,这样可以做到每个模块内存互不干扰。说白一点就是一系列的分配好空间的数组。这可以参考lwip中内存池的分配。 #define LWIP_MEMPOOL(name,num,size,desc) u8_t memp_memory_ ## name ## _base [((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))];  

ss安装笔记

现在的上网安全性越来越差了,感觉随时有人在监视你上网。电信送的政企网关更是漏洞百出,dns经常被劫持,而且电信留有后门,非常不安全。再加上之前出现的同事邮件被监视,诈骗邮件、短信等等的问题,公司的网络真的是问题很大。 之前部署的openvpn服务在手机端用,似乎dns有问题不能用,不用dns的服务则可正常使用。而PC端使用OpenVPN无任何问题。所以打算在国内的服务器上也部署一个SS来上网。 pip安装方式简单记录下: 由于在 pip install 的时候出了问题,估计是国内访问pypi资源很慢,安装失败。于是就打算使用源码安装方式。 1. 用scp 拷贝源码到服务器。 2. 要赶紧把ss的源码好好学学,不然哪天翻不出去也要会自力更生,嘿嘿。 特别 github 还有python大牛源码解析的版本和其它衍生版本可以下哦!这里不贴出来,以免被封。 tips: 对于长城宽带,ss代理若使用常用的443端口经常遇到出不去的情况,可以用telnet 通一下443端口,然后就神奇的可以出去了。这也是无意中发现的,长宽真是个神奇的存在!电信就很少遇到这个问题,不过有极少情况可能是因为找不到路由,可以tracert 一下服务器应该就能出去了。

Lwip Netconn

从Lwip Netconn接口的代码中,我们可以学到与Lwip 协议栈规范的交互方式和这种接口的封装方法。 这里总结出一个看代码的技巧,第一步先是只看正常处理的流程,忽略异常处理的部分,这样代码就可以非常简洁,可以很快把代码流程搞清楚,第二步再看重要的异常情况的处理过程。 连接的建立过程前面已经简单总结过,这里就只说我们比较关心的recv_xxx()过程。 recv_xxx() 函数是在accept_func里注册的,并且pcb->callback_arg = new_netconn。 其回调原型: 函数原型: recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) { struct netconn *conn; u16_t len; conn = (struct netconn *)arg; if (sys_mbox_trypost(&conn->recvmbox, p) != ERR_OK) { … } 这里从tcpip_thread抛出的是pbuf。 netconn 接收部分如下: 这里buf 是void 类型的指针,因为上头可能会用pbuf类型或者netbuf类型来接收邮箱里的pbuf。 netbuf的封装方式: