(1)开启调试模式方法
telnet换为securecrt来操作 端口11023
1)telnet 172.16.88.203 11023
2)输入 root 密码 visidigi
3)touch /mnt/mtd/Config/sofia.dbg #进入调试模式,不用重新验证
4)reboot 重启设备
rmmod wdt 卸载看门狗驱动rmmod wdt 卸载看门狗驱动
telnet 登录设备 ps 查询 无 Sofia 进程运行。
摄像头控制台只允许访问var等两个目录
对sofia.dbg文件是否存在的判断相当于boot启动后的对是否按下空格的判断,如果存在该文件则进入下载更新模式,可以通过tftp命令加载本地的bin文件到设备,并运行。
(2)编译
代码实际是SVN check到本地的,通过将本地的源码挂载到编译服务器上,然后SSH2协议登录到服务器,进入挂载目录,基于服务器的编译环境编译本地的文件,并将编译结果回传到本地。
securecrt SSH2打开 172.16.35.211
用户名: username
密码: sdk289vna83d
创建 work目录
mount 挂载代码目录如下
sudo mount -t cifs //172.16.35.77/sharedDir /home/username/work -o user=admin,nounix,noserverino,uid=$USER,gid=$USER,iocharset=utf8
(3)打包
make pack过程中会打包资源文件,pack过程会将本地文件拷贝到服务器,进行pack,查看服务器中相应的目录可以对比确定是否资源文件已经拷贝正确。
比如
local:
P_3516A2.16.0.x_20150604\PackShop2\Strings\IPC\General\StringsCn.txt
211:
/home/share/username/Tmp/FV-IPC-88xx/General/General/E/20170502/Custom/data/Strings/StringsCn.txt
(4)环境
关于WIN7中Virtualbox搭Ubuntu虚拟机没有Ubuntu64位的选项,因为BIOS中禁止了Intel Virtual Technology
如果Telnet服务未打开,先打开Telnet服务,需要在系统服务中打开该服务
(5)win共享
用到局域网内共享,先在WIN7上将要共享的目录设置一下:
需要在administrator用户组才能使用共享,
创建共享:属性>共享>高级共享>共享此文件夹shared即可
可以在win+R后输入\172.16.35.77\shared测试并进入该共享目录
(6)设备目录挂载
mkdir /var/tmp3;mount -t nfs 172.16.35.211:/home/share/username /var/tmp3 -o nolock,tcp;cd
将211服务器上的目录挂载到当前登录设备的/var/tmp3目录,则在设备上将相关文件拷贝到/var/tmp3后,
可以通过211上的目录或者再次将211上的该目录映射到PC目录,即可在PC上直接访问设备上的目录。
(7)tftp
打开tftpd32之后设置bin文件(Sofia.bin)所在目录
securecrt登录到172.16.85.203 11023
tftp -g -r Sofia -l /var/Sofia 172.16.35.77
chmod 777 /var/Sofia
/var/Sofia
(1)makefile及shell自动配置SVN信息
dist: /home/gong_wei/work/P_3516A2.16.0.x_20150604/bin/demo/FV-IPC-88xx/General/General/General/intermediate/bin/Sofia
slave:
SvnURL: http://172.16.35.210:9191/svn/xxxxxxxxxxxxxx
SvnVersion: 7820
sdk: HI3516A_SDK
(2)单例模式
//---------------------------------------------------------单例声明
#define PATTERN_SINGLETON_DECLARE(classname) \
static classname * instance(); \
static CMutex s_singletion_mutex;
//---------------------------------------------------------单例定义
#define PATTERN_SINGLETON_IMPLEMENT(classname) \
CMutex classname::s_singletion_mutex; \
classname * classname::instance() \
{ \
CGuard tmpGuard(s_singletion_mutex); \
static classname * _instance = NULL; \
if( NULL == _instance) \
{ \
_instance = new classname; \
} \
return _instance; \
}
使用时
///单例类定义文件
class CAlarm : public IAlarmManager
{
public:
PATTERN_SINGLETON_DECLARE(CAlarm);
}
单例类实现文件
PATTERN_SINGLETON_IMPLEMENT(CAlarm);
(3)CSendData拼包
https://blog.csdn.net/u013566722/article/details/80524072
(4)