2025年11月8日星期六

群晖DS920+不停的重启问题

 21年买的DS920+,一直都好好的,使用4年后突然间访问不了,按住电源开机后起不来没反应,只留一个16TB硬盘启动,也会不停的重启(检测不到硬盘)







但是不接硬盘是好的,能启动也比较稳定不会重启,问了AI怀疑是电源问题,更换了全汉的电源,12V10A,接上硬盘后也正常启动(能正常检测到硬盘)

全汉12V10A适用EA11011D-120 PGB 12V8.33A

圆口4针

搞定

2024年11月8日星期五

Nvidia Tegra系列历代产品总结

历代Jetson系列产品,从Tegra K1开始(车载领域开始的产品是Tegra X2)









带宽变化

Tegra X2的架构图













Tegra Xavier的架构图

Tegra Orin的架构图


从2015年到2024年,几乎10年时间,不停的迭代,不断的升级性能,对下一代Thor很期待,不知道什么时候能看到Thor的TRM







2015年11月22日星期日

ARM64从源码编译docker

在X86_64机器fedora系统下,不要使用官方编译的rpm包,交叉编译bootstrap会出现异常,使用源码编译的go.

1.编译X86_64的go binary

cd /root
git clone https://github.com/golang/go
git checkout go1.4.2
cd src/
./make.bash //先编译一个go x86_64
mv /root/go /root/go1.4//因为go1.5beta代码固定了go路径

2.下载go1.5.1,使用go1.4为arm64交叉编译bootstrap,或者直接checkout go1.5.1

cd go/src/
GOOS=linux GOARCH=arm64 ./bootstrap.bash

3. 拷贝go-linux-arm64-bootstrap.tbz到Arm64机器上继续编译其他模块

scp go-linux-arm64-bootstrap.tbz xxx //
//下载go1.5.1代码
git checkout go1.5.1
cd go/src
GOROOT=/path/to/go/bootstrap
GOROOT_BOOTSTRAP=$GOROOT ./all.bash

4. 下载docker源码并编译

git clone https://github.com/jefby/docker.git
git checkout jefby-v1.9.1 //找到最新的v1.9.1版本
AUTO_GOPATH=1 ./hack/make.sh dynbinary //编译动态版本
./hack/make.sh binary //静态版本,根据github docker社区的评论,似乎是用Redhat系列不能用静态版本的,\
因为默认使用了devicemapper,而不是ubuntu使用的aufs


5. 需要安装glibc-static
在docker v1.9.1版本中,hack/make.sh dynbinary中依然依赖libc.a和libpthread.a库,所以需要\
安装glibc-static rpm包,提供这两个库~

6..修改hack/make.sh增加set -x
添加调试选项,进行debug,查看到底是什么地方出现错误

7.安装必须的一些pkg

yum install -y device-mapper-devel
yum install -y btrfs-progs-devel

8.docker pull 的时候提示错误Server error: Status 0 while fetching image layer
解决方法:
在/etc/hosts后面添加对docker网站的dns解析
162.242.195.84 index.docker.io
162.242.195.84 registry-1.docker.io

2015年7月19日星期日

Fedora 22 for arndale octa

Hello,everynoe.

I have made an image based Fedora 22 for arndale octa board.

Offical arndale octa board just provides the linaro ubuntu linux release , but i'm more familiar RHEL/Fedora/CentOS series,,so i take some time to port the fedora 22 to this board, and it works very good.

The image file is very easy to use,and supposes that you use the linux/mac osx ,you just insert your tf card, open the terminal and input follow commands:

dd if=Fedora22-arndale-octa-1G.img of=/dev/sdX bs=1M

when it dones,poll out the tf card and insert it to the board,boot it and it will work ok .Maybe you should upgrade the kernel and dtb files because the new 4.1-rc8 kernel is more efficient and good.please command follow:

  mount /dev/mmcblk1p2 /media
  cp uImage /media/
  cp board.dtb /media/



Besides:

2. uImage



2014年10月29日星期三

程序员开发工具

版本控制工具:
github,sourcetree

开发IDE:

VS2008(C、C++)、PyCharm(Python开发)

代码查看和编辑:

Subtime Text(推荐使用),EditPlus ,Vim

笔记:

有道云笔记,偶尔用下evernote,MarkdownPad Pro(windows下使用,体验很好)

虚拟机软件:

VMware,VirtualBox

串口调试和远程管理:

SecureCRT 5.0(串口连接),winscp(服务器/客户端之间传输文件)

2014年9月23日星期二

大疆笔试题目(嵌入式软件)


    嵌入式软件从整体上说出的难度不是很大,但是感觉出的题还是可以区分开纯软件和嵌入式工程师的,不废话,具体题目想不起来了,只能凭记忆回忆一些。
编程基础
    第一题目是在64位机上,使用32位编译器来编译,求占用内存的大小;如果使用64位编译器又如何?
struct {
int a;
char c;
unsigned short b;
char *p;
void(*p)(int);
};好像粗心做错了,尴尬。。。。
    第二道题目是container_of
    第三道题目是反转某一位。
    还有两道题目想不起来了。
嵌入式基础知识
1.       描述中断处理过程
2.       列举Linux内核态和用户态间通信的方法,你觉得最有效率的是哪一种??这个题不确定。
总线题目
1.       说出UARTI2CUSB总线的异同(全/半双工、串/并行、速率等)
2.       想不起来了
设计题目
已知一个系统中有两个UART接口,UART0UART1UART0是负责接收和回复,UART1是转发。已知有两个字段,一个是命令字段(2字节),一个是数据字段(0~128字节)。
(1)       设计通信数据包格式
(2)       在实时操作系统中,如何设计多个任务和缓存数据,请画出数据流图
(3)       如何设置优先级,说出优缺点

(4)       假如命令字段有高低优先级,重新设计。

2014年9月21日星期日

Linux用户空间和内核空间通信方式比较

资料整理:
1.       论文,主要比较通信方式
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5696027
2.       stackoverflow部分讨论
3.       论文,主要讨论netlink
4.       介绍netlink的一篇博文,写的不错!
摘抄自4的博文:
netlink 相对于系统调用,ioctl 以及 /proc 文件系统而言具有以下优点:
1,为了使用 netlink,用户仅需要在 include/linux/netlink.h 中增加一个新类型的 netlink 协议定义即可, #define NETLINK_MYTEST 17 然后,内核和用户态应用就可以立即通过 socket API 使用该 netlink 协议类型进行数据交换。但系统调用需要增加新的系统调用,ioctl 则需要增加设备或文件,那需要不少代码,proc 文件系统则需要在/proc下添加新的文件或目录,那将使本来就混乱的 /proc 更加混乱。
2. netlink是一种异步通信机制,在内核与用户态应用之间传递的消息保存在socket缓存队列中,发送消息只是把消息保存在接收者的socket的接收队列,而不需要等待接收者收到消息,但系统调用与 ioctl 则是同步通信机制,如果传递的数据太长,将影响调度粒度。
3.使用 netlink 的内核部分可以采用模块的方式实现,使用 netlink 的应用部分和内核部分没有编译时依赖,但系统调用就有依赖,而且新的系统调用的实现必须静态地连接到内核中,它无法在模块中实现,使用新系统调用的应用在编译时需要依赖内核。
4netlink支持多播,内核模块或应用可以把消息多播给一个netlink组,属于该neilink 组的任何内核模块或应用都能接收到该消息,内核事件向用户态的通知机制就使用了这一特性,任何对内核事件感兴趣的应用都能收到该子系统发送的内核事件,在 后面的文章中将介绍这一机制的使用。
5.内核可以使用 netlink 首先发起会话,但系统调用和 ioctl 只能由用户应用发起调用。
6netlink 使用标准的 socket API,因此很容易使用,但系统调用和 ioctl则需要专门的培训才能使用。

                                                                                                      jefby