
alphacam提示取得选项id失败有以下几个原因:
1、IE浏览器的版本太低。
2、IE浏览器的设置有问题。遇到这种情况可以选择重装系统,再安装软件。AlphacamCDM又称阿尔法门板软件、3D5轴软件,是目前柜门加工行业的主流软件。
一键烧写本质上是启动位于SD卡中的Uboot,通过uboot读取sd卡中的文件到SRAM最后通过nand指令实现一键烧写,这一块可以参考提供的uboot源码中include\configs 中的smdk6410h 的529行,代码如下:
代码1:
复制代码
#elif defined(FORLINX_BOOT_SD)
#define FORLINX_DEBUG
#define CONFIG_MMC 1
#define CONFIG_LCD
#define CONFIG_BOOT_MOVINAND
#define CFG_ENV_IS_IN_MOVINAND
#define CONFIG_BOOTCOMMAND "nand led-start;nand erase ;fatload mmc 0:1 0x50008000 u-bootbin;nand writeuboot 0x50008000 0 0x200000;fatload mmc 0:1 0x50008000 zImage;nand writee 0x50008000 0x200000 0x500000; fatload mmc 0:1 0x50008000 rootfsyaffs2; nand writeyaffs2 0x50008000 0x00700000 $filesize; nand beep; nand led-end"
复制代码
从这段代码代码可以看出,uboot中通过宏定义的方式,当定义为FORLINX_BOOT_SD 式通过对相应配置相应的环境变量完成特定的 *** 作,其中定义CONFIG_BOOTCOMMAND 后就可以自动进行nand的查处,从sd卡加载uboot等,这段代码内容稍后继续分析。
下面说一下tftp和地址相关的知识总结
tftp是指通过tftp协议通过网络的方式进行文件传输,需要说明的是ok6410的出厂uboot是不支持网络的,这也就意味着nfs根文件系统以及通过tftp下载内核等都无法 *** 作,其实解决这个问题也很简单,只需要替换网卡相关的文件就可以了,改动不是很大,这个可以找到很多资料,这里不再赘述。不过飞凌在12年9月的更新光盘中已经做了更新,uboot已经支持网络 *** 作了,查一下源码也就是改了那几个文件,因此可以下载烧写最新版uboot。
在进行tftp的 *** 作时最开始可能容易搞混的就是烧写内核啥的应该烧写到哪一个地址去,最开始也有点混,比如有人的博客里是tftp c0008000 zImage 这个地址是c0008000,国嵌的视频教程中是c0800000,各不相同,没看到具体的叙述,而在通过usb等方式中通过usb传送的地址是50008000,因此可能会存在混乱,因此觉得有必要在博客中总结一下。关于地址空间的分配首先还需要看一下芯片手册。芯片手册中关于地址空间的安排如图所示。
image
有一点需要说明的是,图中的地址空间是针对通过地址总线与数据总线进行 *** 作的设备的,通过不同的片选信号来确定对应的地址,所以可以通过图中查表可以确定ok6410的256M RAM的地址范围为0x50000000-0x5FFFFFFF 256M的地址空间,因此通过tftp下载到0x50008000也就是加载到RAM中(向后偏移了32K的地址,稍后在介绍)。到这儿对于0x50008000这个地址的由来就初步了解了。
再来看看很多资料中都提到的0xc0008000这个地址,smdk6410h这个文件的501行可以找到这部分配置:
代码2
复制代码
//uboot-2M ,zImage-5M ,FS-200M,user-other
#define CFG_NAND_ERASE_LEN 0xCF00000 //200MB
#if defined(FORLINX_BOOT_NAND)
#define CONFIG_BOOT_NAND
#define CFG_ENV_IS_IN_NAND
//#define CFG_NAND_LARGEPAGE_SAVEENV
//#define CFG_NAND_FLASH_BBT
#define CONFIG_BOOTCOMMAND "nand read 0xc0008000 0x200000 0x500000;bootm 0xc0008000"
复制代码
这部分定义了nand flash的地址空间划分和启动的地址:bootm 0xc0008000,也就是说是从内存中的这个地址启动内核的,但问题是在上图的地址划分中地址最大值也只到0x6FFFFFFF,0xc0008000这个地址是什么地方呢?一样从源码入手,继续找!
同样从smdk6410h这个文件的452行可以找到这部分配置。
代码3
复制代码
/ base address for uboot /
#ifdef CONFIG_ENABLE_MMU
#define CFG_UBOOT_BASE TEXT_BASE
#define CFG_PHY_UBOOT_BASE (MEMORY_BASE_ADDRESS + (TEXT_BASE - 0xC0000000))
#else
#define CFG_UBOOT_BASE TEXT_BASE
#define CFG_PHY_UBOOT_BASE TEXT_BASE
#endif
复制代码
看了这段代码就明白了,在使能了MMU之后,这段代码相当于对地址做了一个重映射,经过(MEMORY_BASE_ADDRESS + (TEXT_BASE - 0xC0000000))计算后,因为MEMORY_BASE_ADDRESS 为0x50000000(可以在文件开始找到定义)所以经过这样的一个计算,0xc0008000就是0x5000c000。而0xc0008000是内核启动的起始虚拟地址,因此需要做这样的一个映射来和内核对应。
到这儿可能很多人和我当初有一样的疑惑,那就是如果tftp烧写文件系统应该烧写到哪一个地址去呢?在回到上面的地址图表,在最开始我就说过,这个表是针对使用地址总线与数据总线 *** 作的设备而言,因此对于NOR flash、SRAM、DRAM等都是可以直接寻址读写的,而对于Nand Flash,可以参考下电路图,使用的是8个IO进行 *** 作,右Nand控制器弯沉相关的 *** 作,因此是没有一个绝对的地址的。需哟啊注意图表中的**框部分,One Nand并不是普通Nand Flash,区别就在于这种Nand是和NOR、SRAM一样的通过地址总线、数据总线进行 *** 作的方式,因此它是有地址的,对于板子所用的Nand Flash来说只有偏移地址,没有绝对地址。
到这里,对于tftp下载内核、文件系统的相关 *** 作应该清楚了,具体地址其实看看uboot源码就清楚了,可以参考代码1中的这部分:
#define CONFIG_BOOTCOMMAND "nand led-start;nand erase ;fatload mmc 0:1 0x50008000 u-bootbin;nand writeuboot 0x50008000 0 0x200000;fatload mmc 0:1 0x50008000 zImage;nand writee 0x50008000 0x200000 0x500000; fatload mmc 0:1 0x50008000 rootfsyaffs2; nand writeyaffs2 0x50008000 0x00700000 $filesize; nand beep; nand led-end"
如果通过sd卡启动时跳过自动 *** 作进入手动选择 *** 作的话就应该有印象,可以单独选择烧写某一个文件,例如单独烧写文件系统, *** 作如下图所示:
SNAGHTML1ac3bff
那么通过找到对应的命令源码也是可以的,源码位于common/mianc 343行:
复制代码
void arm_USBfuse(void)
{
unsigned char select;
while(1)
{
printf("\n##### Select the fuction #####\n");
printf("[1] Flash u-boot\n");
printf("[2] Flash kernel\n");
printf("[3] Flash system\n");
printf("[4] Exit\n");
printf("Enter your Selection:");
select = getc();
printf("%c\n", select >= ' ' && select <= 127 select : ' ');
void arm_sdfuse(void)
{
unsigned char select;
while(1)
{
printf("\n##### flash from SDcard #####\n");
printf("\n##### Select the fuction #####\n");
printf("[1] Flash all image\n");
printf("[2] Flash u-boot\n");
printf("[3] Flash kernel\n");
printf("[4] Flash system\n");
printf("[5] Exit\n");
printf("Enter your Selection:");
select = getc();
printf("%c\n", select >= ' ' && select <= 127 select : ' ');
switch(select)
{
case '1':
ExecuteCmd("nand erase");
ExecuteCmd("fatload mmc 0:1 50008000 u-bootbin");
ExecuteCmd("nand writeuboot 50008000 0 200000");
ExecuteCmd("fatload mmc 0:1 50008000 zImage");
ExecuteCmd("nand writee 50008000 200000 500000");
ExecuteCmd("fatload mmc 0:1 50008000 rootfsyaffs2");
ExecuteCmd("nand writeyaffs2 50008000 700000 $filesize");
break;
case '2':
ExecuteCmd("nand erase 0 200000");
ExecuteCmd("fatload mmc 0:1 50008000 u-bootbin");
ExecuteCmd("nand writeuboot 50008000 0 200000");
break;
case '3':
ExecuteCmd("nand erase 200000 500000");
ExecuteCmd("fatload mmc 0:1 50008000 zImage");
ExecuteCmd("nand writee 50008000 200000 500000");
break;
case '4':
ExecuteCmd("nand erase 700000");
ExecuteCmd("fatload mmc 0:1 50008000 rootfsyaffs2");
ExecuteCmd("nand writeyaffs2 50008000 700000 $filesize");
break;
case '5':
return;
default:
break;
}
}
}
复制代码
通过tftp单独烧写内核或者文件系统时只需要参考一键烧写的命令烧写到对应的nand 偏移地址即可。
以前下载过其他相机没有?这类是下载的时候调用了系统相机自带文件夹,安卓40系统有的会出现这问题。有时候重新开机,你会发现,下载的在自带相机文件夹,我也出现过这个。如果帮到你,就给个分吧
Google没有使用原来的那套gadget驱动架构(file_storagec),而是参考file_storagec实现了一个新的
模型--- composite模型:
compositec // 实现android下usb管理的框架模型
androidc // 实现具体的usb功能管理
通过蓝牙、WIFI、数据线三种方式,将手机摄像头当pc摄像头使用。从而在一些IM工具(MSN,QQ,GTALK,SKYPE等)中引入视频功能。 以蓝牙为例,安装步骤如下: 1、安装手机端软件SmartCam/projects/smartcam/ 2、USB WebCam 支持USB方式摄像头功能。
我们对android的屏幕旋转方法进行如下总结:
1 AndroidManifestxml设置
如果单单想设置横屏或者竖屏,那么只需要添加横竖屏代码:
android:screenOrientation="landscape"横屏设置;
android:screenOrientation="portrait"竖屏设置;
这种方法的优点:即使屏幕旋转,Activity也不会重新onCreate。
缺点:屏幕只有一个方向。
2 代码动态设置
如果你需要动态改变横竖屏设置,那么,只需要在代码中调用setRequestedOrientation()函数:
setRequestedOrientation(ActivityInfoSCREEN_ORIENTATION_LANDSCAPE);
//横屏设置
setRequestedOrientation(ActivityInfoSCREEN_ORIENTATION_PORTRAIT);
//竖屏设置
setRequestedOrientation(ActivityInfoSCREEN_ORIENTATION_UNSPECIFIED);
//默认设置
这种方法优点:可以随意动态设置,满足我们人为改变横竖屏的要求,同时满足横竖屏UI不同的设计需求;
缺点:如果改变设置,那么,Activity会被销毁,重新构建,即重新onCreate;
3 重写onConfigurationChanged
如果你不希望旋转屏幕的时候Activity被不断的onCreate(这种情况往往会造成屏幕切换时的卡顿),那么,可以使用此方法:
首先,在AndroidMainfestxml中添加configChanges:
<activity android:name="Test"
android:configChanges="orientation|keyboard">
</activity>
注意,keyboardHidden表示键盘辅助功能隐藏,如果你的开发API等级等于或高于13,还需要设置screenSize,因为screenSize会在屏幕旋转时改变;
android:configChanges="keyboardHidden|orientation|screenSize"
然后,在Activity中重写onConfigurationChanged方法,这个方法将会在屏幕旋转变化时,进行监听处理:
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stubsuperonConfigurationChanged(newConfig);
if (newConfigorientation==ConfigurationORIENTATION_LANDSCAPE){
// Nothing need to be done here
} else {
// Nothing need to be done here
}
}
这个方法的优点:我们可以随时监听屏幕旋转变化,并对应做出相应的 *** 作;
缺点:它只能一次旋转90度,如果一下子旋转180度,onConfigurationChanged函数不会被调用。
4 结合OrientationEventListener,自定义旋转监听设置
如果你想更加完美,更加完全的掌控监听屏幕旋转变化,比如,转屏时不想重新onCreate,尤其是在Camera界面,不想出现旋转preview时屏幕的卡顿、黑屏等问题,那么,可以尝试:
首先,创建OrientationEventListener对象:
private OrientationEventListener mOrientationListener;
// screen orientation listener
private boolean mScreenProtrait = true;
private boolean mCurrentOrient = false;
然后,自定义屏幕变化回调接口
abstract protected void OrientationChanged(int orientation);
//screen orientation change event
最后,自定义监听类
private final void startOrientationChangeListener() {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
mCurrentOrient = true;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfoSCREEN_ORIENTATION_PORTRAIT);
Logd(TAG, "Screen orientation changed from Landscape to Portrait!");
}
}
else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
mCurrentOrient = false;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfoSCREEN_ORIENTATION_LANDSCAPE);
Logd(TAG, "Screen orientation changed from Portrait to Landscape!");
}
}
}
};
mOrientationListenerenable();
}
在onCreate()中调用:
startOrientationChangeListener();
这个方法的优点:你可以任意随时准确的监听屏幕旋转变化的状态,可以随时动态改变横竖屏状态;
注:对于Camera来说,你可以设置初始化为横屏或者竖屏,然后对外提供旋转监听,这样,既可以获得屏幕旋转状态,让你做出相应的 *** 作,又不会出现重新onCreate当前Activity造成的卡顿与短暂的黑屏切换。
有android软件可以用手机扫描文件,不用打字,例如:扫描全能王,。
扫描仪是一个能够把相片、印刷文件或手写文件等图像,或装饰品等小对象扫描、分析并化成数字图像的器材,通过捕获图像并将之转换成计算机可以显示、编辑、存储和输出。
CamScanner扫描全能王,将智能手机变成随身携带的扫描仪。方便快捷地记录管理您的各种文档,收据,笔记和白板讨论等。并通过智慧精准的图像裁剪和图像增强演算法,使扫描的内容清晰可读。
以上就是关于alphacam提示取得选项id失败全部的内容,包括:alphacam提示取得选项id失败、android webcam模块、问:为什么下载的照片会存在系统拍照的文件夹Camare里面。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)