“Jz2440LearningFAQ”的版本间的差异

来自百问网嵌入式Linux wiki
(优化版本,添加专题答疑内容)
第2行: 第2行:
 
* [[ VMwareAndUbuntuNetworkSetupGuide  | 开发板、PC、Ubuntu的网络环境搭建 ]]
 
* [[ VMwareAndUbuntuNetworkSetupGuide  | 开发板、PC、Ubuntu的网络环境搭建 ]]
 
* [[ ARM%E8%A3%B8%E6%9C%BA%E5%8A%A0%E5%BC%BA%E7%89%88 | 新1期维基教程]]
 
* [[ ARM%E8%A3%B8%E6%9C%BA%E5%8A%A0%E5%BC%BA%E7%89%88 | 新1期维基教程]]
* [https://v.qq.com/x/page/l0518su44na.html」 EOP使用常见问题解决方法]
+
* [https://www.bilibili.com/video/av22022847?p=14」 常见问题汇总]
 
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328956&idx=1&sn=80841941d9abfde33e31b037485eba18&chksm=839769b6b4e0e0a0660c5910a6b364bc75a5cf5e8523ee50e61c35b437345ef2383054960ab0#rd DNW 驱动安装方法]
 
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328956&idx=1&sn=80841941d9abfde33e31b037485eba18&chksm=839769b6b4e0e0a0660c5910a6b364bc75a5cf5e8523ee50e61c35b437345ef2383054960ab0#rd DNW 驱动安装方法]
 
* [https://jingyan.baidu.com/article/0f5fb09930de116d8334ea12.html Win8 (或以上系统)安装 EOP「EasyOpenJTAG」 时出现"文件哈希值..."的解决方法]
 
* [https://jingyan.baidu.com/article/0f5fb09930de116d8334ea12.html Win8 (或以上系统)安装 EOP「EasyOpenJTAG」 时出现"文件哈希值..."的解决方法]
第14行: 第14行:
 
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328600&idx=1&sn=ef08bb2b43ea9bde4c62acc11e5beccc&chksm=83976f52b4e0e644ba66e7c531fa1242c15b28b9e69b5c0b3486abd35f146e4f59f821b903e6#rd 挂载根文件系统出现 "Kernel panic..." 的解决方案]
 
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328600&idx=1&sn=ef08bb2b43ea9bde4c62acc11e5beccc&chksm=83976f52b4e0e644ba66e7c531fa1242c15b28b9e69b5c0b3486abd35f146e4f59f821b903e6#rd 挂载根文件系统出现 "Kernel panic..." 的解决方案]
  
=为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?=
+
= FAQ =
 +
==Ubuntu的登录用户名和密码==
 +
: 我们提供的所有的Ubuntu的用户名和密码统一如下:
 +
<syntaxhighlight lang="bash">
 +
    用户名: book
 +
    密码:  123456
 +
</syntaxhighlight>
 +
 
 +
==为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?==
 
# 首先得让 ubuntu 与 window 之间互相 PING 通  
 
# 首先得让 ubuntu 与 window 之间互相 PING 通  
 
# ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH
 
# ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH
  
=Ubuntu 16.04 登录密码是什么?=
+
==Ubuntu 16.04 登录密码是什么?==
 
: 您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04
 
: 您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04
 
: 它们用户名和密码都是: book ;123456
 
: 它们用户名和密码都是: book ;123456
 
: 没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。
 
: 没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。
  
=JZ2440 开发板触摸不灵敏=
+
==JZ2440 开发板触摸不灵敏==
 
: 先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令:  
 
: 先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令:  
rm /etc/pointercal
+
<syntaxhighlight lang="bash">
 +
    $ rm /etc/pointercal
 +
</syntaxhighlight>
 
: 重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。
 
: 重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。
  
=如何对 JZ2440 进行格式化?=
+
==如何对 JZ2440 进行格式化?==
 
: 进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车
 
: 进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车
  
=摄像头不显示图像=
+
==摄像头不显示图像==
 
: 不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可
 
: 不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可
 
: 我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间
 
: 我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间
 
: 后续章节的内容,完全覆盖 xawtv 的内容
 
: 后续章节的内容,完全覆盖 xawtv 的内容
  
=视频播放=
+
==视频播放==
 
: 之前的视频很流畅,仅 cmos 部分的视频很卡
 
: 之前的视频很流畅,仅 cmos 部分的视频很卡
 
: 换 http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer”
 
: 换 http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer”
  
=xp 系统播放视频有声音无图像=
+
==xp 系统播放视频有声音无图像==
 
: 关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边
 
: 关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边
  
=播放器异常停止(一般是win7,win10)=
+
==播放器异常停止(一般是win7,win10)==
 
: 点击:
 
: 点击:
huplayer菜单 -> 选项 -> Tweaks -> Delete All License in your PC
+
<syntaxhighlight lang="bash">
 +
    huplayer菜单 -> 选项 -> Tweaks -> Delete All License in your PC
 +
</syntaxhighlight>
 
: 然后发邮件找我们解绑后再登陆
 
: 然后发邮件找我们解绑后再登陆
  
=手机/平板如何观看加密视频?=
+
==手机/平板如何观看加密视频?==
 
# 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器
 
# 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器
 
# 把视频导入到手机,使用播放器打开视频输入用户名和密码
 
# 把视频导入到手机,使用播放器打开视频输入用户名和密码
 
# 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名
 
# 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名
 
# 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。
 
# 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。
 +
 +
=专题答疑=
 +
==NANDFLASH疑问==
 +
===NAND坏块疑问===
 +
: '''{{redtext|提问:}}'''
 +
:: 1.nand的坏块是不是出厂的时候很难避免,厂家在出厂的时候标记好后,在nand中读写数据会自动避开坏块,如果擦除坏块标记,可能会带来数据完整性的问题吗?
 +
:: 2.这样做出来产品会不会带来稳定性问题?
 +
:: 3.如果一旦擦除坏块的标记,能恢复吗?怎么恢复?
 +
: 解答:
 +
:: 1.出厂时,对于坏块会标记,我们使用过程中如果发现坏了也要自己标记
 +
:: 2.没有“自动避开”,驱动程序中要擦除、读、写前,先判断该BLOCK是否正常,如果是“坏的”,那就避开
 +
:: 3.NAND FLASH一般用来保存视频等海量数据,就是因为它不可靠,不能用来保存程序等关键性数据,这些关键数据用NOR FLASH来保存但是对于廉价电子产品、消费电子产品,一般直接使用NAND:一是现在的工艺已经挺可靠,出现坏块的可能性降低;二是消费类电子产品,坏就坏了,坏了就修
 +
:: 4.一旦擦除坏块标记,能恢复吗?这问题我没找到相关资料,根据经常,坏块是无法擦除的。即:坏块的标记是无法简单擦除的;UBOOT里有一个nand scrub命令,它就是强制擦除整个芯片的;但是执行 nand scrub后再执行nand bad还是可以查出原先的坏块
 +
 +
===NAND FLASH初始化?===
 +
: '''{{redtext|提问:}}'''
 +
:: 如果使用NAND方式启动开发板,在教程中韦老师说硬件会把Nand的4K内容拷贝到SRAM里,但是这个时候Nand都没有初始化,为什么能从Nand的前4K拷贝内容?
 +
: 解答:
 +
:: 1.nand不需要初始化,要初始化的是nand 控制器
 +
:: 2.SROM的程序(我们看不见),会使用最安全的参数来初始化nand控制器,然后去读前4K到片内内存
 +
: '''{{redtext|提问:}}'''
 +
:: 不同页大小的NAND的读操作是不一样的,SROM怎么分辨?
 +
: 解答:
 +
:: NAND不同时,电路板上要设置配置引脚为高电平或低电平,比如NCON引脚。
 +
 +
==NANDFLASH疑问==
 +
==NORFLASH初始化疑问==
 +
: '''{{redtext|提问:}}'''
 +
:: 请问下裸机加强版 norflash的初始化在哪里啊?看视频好像直接就读写了
 +
: 解答:
 +
:: 1.访问NOR时,本来也应该先设置时序;但是可以使用默认的时序。内存控制器内部对于CS0的时序,设置得非常保守,可以用于一切NOR FLASH
 +
:: 2.NOR可以像内存一样直接读,但是不能直接写
 +
:: 3.视频中,有讲解怎么去设置NOR的时序让它的访问更快一点
 +
 +
 +
==内存控制器疑问==
 +
: '''{{redtext|提问:}}'''
 +
:: 老师 你好 之前你的课程有提到过内存控制器负责挑数据 那么怎么挑的呢?
 +
: 解答:
 +
:: 比如 CPU想访问地址0x30000001的1字节数据,而SDRAM的位宽是32位,那么内存控制器会返回这4个地址上的4个字节数据:0x30000000,0x30000001,0x30000002,0x30000003。那显然,内存控制器会把第2个数据即地址0x30000001对应的数据返回给CPU
 +
 +
 +
==编译器疑问==
 +
: '''{{redtext|提问:}}'''
 +
:: 1.arm交叉编译器各版本的兼容性,如使用3.4.5编译的动态链接库,可否用4.4编译应用程序,并成功调用动态库?
 +
:: 2.拿到一个陌生的arm版,如何从arm板上获取编译器版本,(原PC端开发信息丢失)?
 +
: 解答:
 +
:: 问题1:
 +
::: 我们首先要弄清楚指令集的概念:
 +
:::: JZ2440使用arm9核,该CPU核使用的指令集是armv4;
 +
:::: 所谓指令集,指的是汇编指令的版本;比如cortex a7等更先进的CPU核它支持某些新的指令,而ARM9不支持这些指令。
 +
:::: 你使用比较新的编译器时,它默认支持的指令集一般就不是armv4了;
 +
:::: 如果不进行特别指定,编译出来的BIN文件烧在JZ2440上是无法运行的:因为CPU不认得某些新指令,无法执行某些新指令。
 +
:::: 一般来说,新的编译器会兼容老的芯片,但是需要告诉编译器,让它使用老的指令集来编译程序。
 +
:::: 所以,你当然可以使用4.4的工具链来编译jz2440程序,需要做的是:指定它,使用armv4指令集。
 +
::::: 方法如下:
 +
:::::: 使用3.4.5工具链时,我们这样编译:arm-linux-gcc -c -o led.o led.c              // 默认使用armv4
 +
:::::: 使用4.4等工具链时,这样编译:arm-linux-gcc -march=armv4  -c -o led.o led.c    // 默认不是armv4,需要手工指定
 +
:: 问题2:
 +
::: 相信你已经知道答案了,
 +
::: 首先要确定你的CPU核使用哪些指令集,
 +
::: 是否支持软件浮点,
 +
::: 你想使用glibc还是uclibc,
 +
::: 然后根据这些特性去找对应的编译器。
 +
::: 注意:uclibc是glibc的简化版本,不过现在嵌入式的存储空间足够大了,基本不使用uclibc了。
 +
 +
==EOP疑问==
 +
===EPO测试方法===
 +
: 1. EOP通过USB线接到电脑上,EOP通过JTAG排线接到开发板上
 +
: 2. 开发板上电、断电,反复操作;同时观察EOP上的灯,看看灯有没有亮、灭;
 +
:: 如果EOP的灯没变化,表示JTAG排线有问题
 +
: 3. 开发板上电,运行oflash,观察打印出来的CPUID
 +
:: 如果CPUID是0,一般表示开发板没上电
 +
:: 如果CPUID是0xffffffff,那么把开发板上电时执行一次oflash、开发板断电时再执行一次oflash:观察CPUID有无变化
 +
:4. 经过上述操作,oflash还是未能识别出开发板,一般来说就是JTAG线坏了、EOP坏了、开发板坏了
 +
 +
===EOP支持调试模式吗?===
 +
: 解答:
 +
:: 不支持, 我们EOP用的是JTAG协议,但不支持SWD调试模式
 +
:: 参考,[https://blog.csdn.net/ningjianwen/article/details/53230116 JTAG和SWD的区别]。

2019年12月6日 (五) 11:15的版本

FAQ

Ubuntu的登录用户名和密码

我们提供的所有的Ubuntu的用户名和密码统一如下:
    用户名: book
    密码:   123456

为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?

  1. 首先得让 ubuntu 与 window 之间互相 PING 通
  2. ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH

Ubuntu 16.04 登录密码是什么?

您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04
它们用户名和密码都是: book ;123456
没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。

JZ2440 开发板触摸不灵敏

先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令:
    $ rm /etc/pointercal
重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。

如何对 JZ2440 进行格式化?

进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车

摄像头不显示图像

不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可
我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间
后续章节的内容,完全覆盖 xawtv 的内容

视频播放

之前的视频很流畅,仅 cmos 部分的视频很卡
http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer”

xp 系统播放视频有声音无图像

关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边

播放器异常停止(一般是win7,win10)

点击:
    huplayer菜单 -> 选项 -> Tweaks -> Delete All License in your PC
然后发邮件找我们解绑后再登陆

手机/平板如何观看加密视频?

  1. 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器
  2. 把视频导入到手机,使用播放器打开视频输入用户名和密码
  3. 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名
  4. 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。

专题答疑

NANDFLASH疑问

NAND坏块疑问

提问:
1.nand的坏块是不是出厂的时候很难避免,厂家在出厂的时候标记好后,在nand中读写数据会自动避开坏块,如果擦除坏块标记,可能会带来数据完整性的问题吗?
2.这样做出来产品会不会带来稳定性问题?
3.如果一旦擦除坏块的标记,能恢复吗?怎么恢复?
解答:
1.出厂时,对于坏块会标记,我们使用过程中如果发现坏了也要自己标记
2.没有“自动避开”,驱动程序中要擦除、读、写前,先判断该BLOCK是否正常,如果是“坏的”,那就避开
3.NAND FLASH一般用来保存视频等海量数据,就是因为它不可靠,不能用来保存程序等关键性数据,这些关键数据用NOR FLASH来保存但是对于廉价电子产品、消费电子产品,一般直接使用NAND:一是现在的工艺已经挺可靠,出现坏块的可能性降低;二是消费类电子产品,坏就坏了,坏了就修
4.一旦擦除坏块标记,能恢复吗?这问题我没找到相关资料,根据经常,坏块是无法擦除的。即:坏块的标记是无法简单擦除的;UBOOT里有一个nand scrub命令,它就是强制擦除整个芯片的;但是执行 nand scrub后再执行nand bad还是可以查出原先的坏块

NAND FLASH初始化?

提问:
如果使用NAND方式启动开发板,在教程中韦老师说硬件会把Nand的4K内容拷贝到SRAM里,但是这个时候Nand都没有初始化,为什么能从Nand的前4K拷贝内容?
解答:
1.nand不需要初始化,要初始化的是nand 控制器
2.SROM的程序(我们看不见),会使用最安全的参数来初始化nand控制器,然后去读前4K到片内内存
提问:
不同页大小的NAND的读操作是不一样的,SROM怎么分辨?
解答:
NAND不同时,电路板上要设置配置引脚为高电平或低电平,比如NCON引脚。

NANDFLASH疑问

NORFLASH初始化疑问

提问:
请问下裸机加强版 norflash的初始化在哪里啊?看视频好像直接就读写了
解答:
1.访问NOR时,本来也应该先设置时序;但是可以使用默认的时序。内存控制器内部对于CS0的时序,设置得非常保守,可以用于一切NOR FLASH
2.NOR可以像内存一样直接读,但是不能直接写
3.视频中,有讲解怎么去设置NOR的时序让它的访问更快一点


内存控制器疑问

提问:
老师 你好 之前你的课程有提到过内存控制器负责挑数据 那么怎么挑的呢?
解答:
比如 CPU想访问地址0x30000001的1字节数据,而SDRAM的位宽是32位,那么内存控制器会返回这4个地址上的4个字节数据:0x30000000,0x30000001,0x30000002,0x30000003。那显然,内存控制器会把第2个数据即地址0x30000001对应的数据返回给CPU


编译器疑问

提问:
1.arm交叉编译器各版本的兼容性,如使用3.4.5编译的动态链接库,可否用4.4编译应用程序,并成功调用动态库?
2.拿到一个陌生的arm版,如何从arm板上获取编译器版本,(原PC端开发信息丢失)?
解答:
问题1:
我们首先要弄清楚指令集的概念:
JZ2440使用arm9核,该CPU核使用的指令集是armv4;
所谓指令集,指的是汇编指令的版本;比如cortex a7等更先进的CPU核它支持某些新的指令,而ARM9不支持这些指令。
你使用比较新的编译器时,它默认支持的指令集一般就不是armv4了;
如果不进行特别指定,编译出来的BIN文件烧在JZ2440上是无法运行的:因为CPU不认得某些新指令,无法执行某些新指令。
一般来说,新的编译器会兼容老的芯片,但是需要告诉编译器,让它使用老的指令集来编译程序。
所以,你当然可以使用4.4的工具链来编译jz2440程序,需要做的是:指定它,使用armv4指令集。
方法如下:
使用3.4.5工具链时,我们这样编译:arm-linux-gcc -c -o led.o led.c // 默认使用armv4
使用4.4等工具链时,这样编译:arm-linux-gcc -march=armv4 -c -o led.o led.c // 默认不是armv4,需要手工指定
问题2:
相信你已经知道答案了,
首先要确定你的CPU核使用哪些指令集,
是否支持软件浮点,
你想使用glibc还是uclibc,
然后根据这些特性去找对应的编译器。
注意:uclibc是glibc的简化版本,不过现在嵌入式的存储空间足够大了,基本不使用uclibc了。

EOP疑问

EPO测试方法

1. EOP通过USB线接到电脑上,EOP通过JTAG排线接到开发板上
2. 开发板上电、断电,反复操作;同时观察EOP上的灯,看看灯有没有亮、灭;
如果EOP的灯没变化,表示JTAG排线有问题
3. 开发板上电,运行oflash,观察打印出来的CPUID
如果CPUID是0,一般表示开发板没上电
如果CPUID是0xffffffff,那么把开发板上电时执行一次oflash、开发板断电时再执行一次oflash:观察CPUID有无变化
4. 经过上述操作,oflash还是未能识别出开发板,一般来说就是JTAG线坏了、EOP坏了、开发板坏了

EOP支持调试模式吗?

解答:
不支持, 我们EOP用的是JTAG协议,但不支持SWD调试模式
参考,JTAG和SWD的区别