Q7的硬件配置

CPU: S905L
RAM: MIRA P3P4GF4DMF/P3P4GF4BLF DDR3 512MB * 2 = 1GB
ROM: 镁光29F64G08CBABB(NAND) * 1 = 8GB or SanDisk SDINBDG4-8G(eMMC) * 1 = 8GB
WIFI: RTL8189FTV
AMP: SGM8905
Interface: USB2.0 * 2, AV * 1, HDMI * 1, Micro Sdcard Reader * 1, 10/100M eth * 1, IR * 1, SPDIF * 1
Power: 待机 0.9W, 工作 2.9~3.0W, 播放视频时3.5W

Q7有两种存储, 一种是NAND, 另一种是eMMC, 对应在板子上前者是长方形针脚的IC, 后者是正方形BGA焊接的IC. 在UBOOT启动时, NAND和eMMC的启动信息是不同的

# NAND
BL2 Built : 18:58:24, Oct 25 2016.
gxl gc9db010 - xiaobo.gu@droid05 set vcck to 1080 mv
set vddee to 1050 mv
Board ID = 7, adc=557
CPU clk: 1200MHz
2layers board, use ddr_set[0]
DDR chl: Rank0+1 @ 720MHz - FAIL
DDR chl: Rank0 @ 720MHz - PASS
DQS-corr enabled
DDR scramble enabled
Rank0: 1024MB(auto)-2T-11
DataBus test pass!
AddrBus test pass!
NAND init
Load fip header from NAND, src: 0x0000c000, des: 0x01400000, size: 0x00004000
Load bl30 from NAND, src: 0x00010000, des: 0x01100000, size: 0x00007400
Load bl301 from NAND, src: 0x00018000, des: 0x01200000, size: 0x00002000
Load bl31 from NAND, src: 0x0001c000, des: 0x10100000, size: 0x00019400
Load bl33 from NAND, src: 0x00038000, des: 0x01000000, size: 0x000a6200
NOTICE: BL3-1: v1.0(debug):959fdf0
NOTICE: BL3-1: Built : 15:01:44, Dec 29 2016 # eMMC
BL2 Built : 18:58:24, Oct 25 2016.
gxl gc9db010 - xiaobo.gu@droid05 set vcck to 1080 mv
set vddee to 1050 mv
Board ID = 7, adc=530
CPU clk: 1200MHz
2layers board, use ddr_set[0]
DDR chl: Rank0+1 @ 720MHz - FAIL
DDR chl: Rank0 @ 720MHz - PASS
DQS-corr enabled
DDR scramble enabled
Rank0: 1024MB(auto)-2T-11
DataBus test pass!
AddrBus test pass!
-s
Load fip header from eMMC, src: 0x0000c200, des: 0x01400000, size: 0x00004000
Load bl30 from eMMC, src: 0x00010200, des: 0x01100000, size: 0x00007400
Load bl301 from eMMC, src: 0x00018200, des: 0x01200000, size: 0x00002000
Load bl31 from eMMC, src: 0x0001c200, des: 0x10100000, size: 0x00019400
Load bl33 from eMMC, src: 0x00038200, des: 0x01000000, size: 0x000a6200
NOTICE: BL3-1: v1.0(debug):959fdf0
NOTICE: BL3-1: Built : 15:01:44, Dec 29 2016

  

Q7的刷机

准备工作

固件: 首先鄙视一下ZNDS这个破网站, 下固件要收钱, 还有刷完要交钱才能用的固件, 百度下满屏都是这个网站的结果.

对于NAND存储的Q7: http://www.hdpfans.com/thread-787070-1-1.html 下载`移动魔百和M201S, 数讯视讯Q7`下20171208开头的文件.

Update 20191218: 上面那个固件, TTL Shell里有很多RTL818X的调试信息输出, 影响命令行操作, 推荐使用这个新的固件 https://www.right.com.cn/forum/thread-1769596-1-1.html

对于eMMC存储的Q7:

eMMC存储的Q7也可以使用NAND的固件, 但是eMMC还可以使用R3300L的固件, https://www.right.com.cn/forum/thread-1761250-1-1.html

安装USB Burning Tool, 安装驱动, 准备双公头USB线

这个和R3300L, N1都是一样的, 网上很多说明不再赘述.

拆卸盒子

有些早期的版本, 在底板上标R字的地方, 底下有贴片微触开关, 这种就不需要拆, 如果里面没焊这个元件, 就必须拆了

Q7的拆卸其实是很容易的, 因为这个盒子的壳很软, 拿裁纸刀刀背往里伸, 轻轻一撬就能开一边, 四周一圈轻松就把底盖取下来.

刷机步骤

1. 盒子拔电, 开关处于关机的状态, 双公头线一头插在靠近TF卡槽的USB口 (另一个口是否能用不知道, 没试过, 我是看别人的说明这么做的).

2. 电脑上打开USB Burning Tool

3. 用一根漆包线(从网线里拆出来那种), 两头露出两三毫米的铜芯, 插在标有UBOOT USB的两个过孔上, 用手稍微斜摁住. 这个目的是让两个过孔短接, 但是注意露出的铜芯不要太长, 不要误接到四周其他的元件上. 如果是第一次刷, 你得把三个螺丝拧下来, 在电路板正面找到这两个孔. 如果熟悉了, 其实不用拆螺丝也可以, 在电路板背面是直接能看到这两个过孔的, 直接在背面短接就可以了.

4. 保持住3的短接状态, 将双公头USB线另一头连上电脑, 此时应该在USB Burning Tool的界面上看到 HUB2-1: Connected Success 之类的提示, 并且盒子的电源灯亮起. 此时板子就已经进入USB调试状态, 可以松开短接了, 把线撤掉.

5. 在USB Burning Tool 里选择img, 保持Erase Flash和Erase Bootloader两个勾选不动, 点击Start, 正常情况进度条就会自动从0%走到100%

6. 点击Stop, 然后关闭USB Burning Tool, 再拔掉USB线, 此时刷机就算完成了.

Q7的mmc初始化报错无法进系统

今天上午在给一个NAND存储的Q7加焊TTL引线后, 发现开机无法进入系统了, TTL输出一直重复着错误输出, 其错误输出是这样的

Hit any key to stop autoboot:  0
card out
emmc/sd response timeout, cmd8, status=0x1ff2800
emmc/sd response timeout, cmd55, status=0x1ff2800
emmc/sd response timeout, cmd1, status=0x1ff2800
(Re)start USB...
USB0: USB3.0 XHCI init start
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
** Bad device usb 0 **
** Bad device usb 1 **
** Bad device usb 2 **
** Bad device usb 3 **
emmc/sd response timeout, cmd8, status=0x100a800
emmc/sd response timeout, cmd55, status=0x100a800
emmc/sd response timeout, cmd1, status=0x100a800
** Bad device mmc 1 **
quene rb busy here
phy read failed at devops->addr: 5c404000
aml_ops_read_page failed: 5c404000 369 1
nand_read_logic_page : read a page ecc failed
do_prio_gc block:369, type:1
quene rb busy here
phy read failed at devops->addr: 5c7fc000
aml_ops_read_page failed: 5c7fc000 369 255
prio_garbage_collect cannot find PHY_MAPPING_PAGE c8ffffff !!
quene rb busy here
phy read failed at devops->addr: 5c400000
aml_ops_read_page failed: 5c400000 369 0
quene rb busy here
phy read failed at devops->addr: 5c404000
aml_ops_read_page failed: 5c404000 369 1
quene rb busy here
phy read failed at devops->addr: 5c408000
aml_ops_read_page failed: 5c408000 369 2

其后一直无限重复这三行输出, 并且无法拍空格进入uboot命令行. 因为启动的检查顺序是sdcard, mmc, usb0 ~ 3, 所以如果插着卡, 依然可以用TF卡启动Armbian系统, 只是无法从自身启动. 而且从Armbian系统中也无法通过fw_printenv查看uboot配置, 报设备不存在, 确实mmc启动失败了当然找不到. 检查线路板没有明显的虚焊脱焊或者焊锡渣, 怀疑是不是没注意接地被静电搞坏了.

晚上抱着试一试的心理短接UBOOT USB孔看看能不能进usb burn模式, 结果还连接上了. 于是加载img线刷试试. TTL输出中看到有关于检测到坏块的日志, 重新擦写后, 线刷成功了.

这个使用NAND的盒子只能刷特定的固件, 每次刷的时候都会重新进行擦写, 并且提示坏块. 在运行EmuELEC和Armbian时, 也无法识别出NAND设备, 无法使用ddbr进行备份和恢复, 在运行高版本Armbian后, 会再次出现内部存储错误而无法从本机启动的情况.

U-Boot 2015.01-gd893f87 (Jul 13 2016 - 19:10:21)

DRAM:  1 GiB
Relocation Offset is: 36ed2000
[MSG]MMC init in usb
aml_priv->desc_buf = 0x0000000033ec2630
aml_priv->desc_buf = 0x0000000033ec47c0
SDIO Port B: 0, SDIO Port C: 1
Enter USB burn
Set Addr 6
Get DT cfg
Get DT cfg
Get DT cfg
set CFG ID[16]
tplcmd[ echo 12345]
12345
[MSG]ret = 0
[info]success
BULKcmd[ low_power]
[info]success ID[16]
tplcmd[ download mem dtb normal 149504]
[MSG]Down(mem) part(dtb) sz(0x24800) fmt(normal)
[MSG]totalSlotNum = 0, nextWriteBackSlot 3
[info]success
[MSG]Burn Start...
[MSG]load dt.img to 0x0000000001000000, sz=0x24800
[MSG]Burn complete
BULKcmd[download get_status]
[info]success
BULKcmd[disk_initial 1]
Amlogic multi-dtb tool
Multi dtb detected
Multi dtb tool version: v2 .
Support 4 dtbs.
aml_dt soc: gxl platform: p211 variant: 1g
dtb 0 soc: gxbb plat: p201 vari: 1g
dtb 1 soc: gxbb plat: p201 vari: 2g
dtb 2 soc: gxl plat: p211 vari: 1g
dtb 3 soc: gxl plat: p211 vari: 2g
Find match dtb: 2
start dts,buffer=0000000001000000,dt_addr=0000000001011800
parts: 14
00: logo 0000000002000000 1
01: recovery 0000000002000000 1
02: rsv 0000000000800000 1
03: tee 0000000000800000 1
04: crypt 0000000002000000 1
05: misc 0000000002000000 1
06: instaboot 0000000020000000 1
07: boot 0000000002000000 1
08: system 0000000028000000 1
09: cache 0000000020000000 2
10: ghost 0000000020000000 4
11: info 0000000004000000 4
12: params 0000000004000000 2
13: data ffffffffffffffff 4
emmc/sd response timeout, cmd = 8
emmc/sd response timeout, cmd = 55
emmc/sd response timeout, cmd = 1
EMMC init failed
boot_device_flag : 1
Nand PHY Ver:1.01.001.0006 (c) 2013 Amlogic Inc.
init bus_cycle=6, bus_timing=8, system=5.0ns
NAND device id: 2c 64 44 4b a9 0 0 0
detect NAND device: B revision NAND 8GiB MT29F64G08CBABA
XXXXXXX======enter NAND boot======XXXXXX boot_device_flag : 1
Nand PHY Ver:1.01.001.0006 (c) 2013 Amlogic Inc.
init bus_cycle=6, bus_timing=8, system=5.0ns
NAND device id: 2c 64 44 4b a9 0 0 0
detect NAND device: B revision NAND 8GiB MT29F64G08CBABA
new oob mode
bus_c=6,bus_t=8,sys=4.0ns,T_REA=16,T_RHOH=15
show_phydev_list
0: nfboot
detect new nand here and new_type:50
NAND CKECK:arg nbbt: valid=1, blk=5, page=0
NAND CKECK:arg fbbt: valid=1, blk=6, page=0
outside dtb: 0000000033ec69a0
NAND CKECK:arg ndtb: valid=1, blk=7, page=33
amlnf_detect_dtb_partitions:dtb_erase_blk:7
NAND CKECK:arg nkey: valid=1, blk=10, page=0
start_blk =0,total_blk=4096
nand erasing 0 % --10 % complete
protect nand_bbt info at blk 5
chipenv block skipping!!!!!!!0x5
protect fbbt at blk 6
chipenv block skipping!!!!!!!0x6
protect nand_key info at blk 10
chipenv block skipping!!!!!!!0xa
bad block skipping!!!!0x5a
bad block skipping!!!!0x5b
nand erasing 10 % --20 % complete
nand erasing 20 % --30 % complete
nand erasing 30 % --40 % complete
nand erasing 40 % --50 % complete
nand erasing 50 % --60 % complete
nand erasing 60 % --70 % complete
nand erasing 70 % --80 % complete
nand erasing 80 % --90 % complete
nand erasing 90 % --100 % complete
nandphy_init failed and ret=0xffffffff
nand_init failed ret:1
command: amlnf init 1 <- 3 boot_device_flag : 1
Nand PHY Ver:1.01.001.0006 (c) 2013 Amlogic Inc.
init bus_cycle=6, bus_timing=8, system=5.0ns
NAND device id: 2c 64 44 4b a9 0 0 0
detect NAND device: B revision NAND 8GiB MT29F64G08CBABA
new oob mode
bus_c=6,bus_t=8,sys=4.0ns,T_REA=16,T_RHOH=15
show_phydev_list
0: nfboot
detect new nand here and new_type:50
NAND CKECK:arg nbbt: valid=1, blk=5, page=0
NAND CKECK:arg fbbt: valid=1, blk=6, page=0
outside dtb: 0000000033ec69a0
NAND CKECK:arg ndtb: valid=0, blk=0, page=0
found NO arg : ndtb info
amlnf_detect_dtb_partitions:dtb_erase_blk:-1
NAND CKECK:arg ncnf: valid=0, blk=0, page=0
found NO arg : ncnf info
aml_key_init probe.
NAND CKECK:arg nkey: valid=1, blk=10, page=0
nand dtb: probe.
NAND CKECK:arg ndtb: valid=0, blk=0, page=0
found NO arg : ndtb info
boot_device_flag 1
NAND CKECK:arg nenv: valid=0, blk=0, page=0
found NO arg : nenv info
bbt_valid_ops: do nothing!
amlnand_get_dev_configs() 4104
partition-> partiton_num 2
partition-> partiton_num 9
partition-> partiton_num 3
amlnand_save_info_by_name(), 1155
name ncnf, size:3248
amlnand_save_info_by_name, 1221: new blk 4
nfboot : 0x000000000000-0x000000800000 :partn=0:single_chip single_plane
nfcache : 0x000006800000-0x000029000000 :partn=2:single_chip multi_plane
nfcode : 0x00002f800000-0x00005c800000 :partn=9:single_chip multi_plane
nfdata : 0x00008c000000-0x000174000000 :partn=3:single_chip multi_plane
(nfboot) bad blks 0
(nfcache) bad blks 0
(nfcode) bad blks 0
(nfdata) bad blks 0
amlnf_logic_init() start
(nfcache), size:29000000
nftl version 1.01.001
size_in_blk 164; total_block 163;
nftl start: size 163, free 19
-blks(163), total_blocks(144)
all block full!!
current block: 163
(nfcode), size:5c800000
nftl version 1.01.001
nftl start: size 370, free 38
-blks(370), total_blocks(332)
all block full!!
current block: 369
(nfdata), size:174000000
nftl version 1.01.001
nftl start: size 1488, free 139
-blks(1488), total_blocks(1349)
all block full!!
current block: 1487
amlnf_logic_init() done
dtb erase Okay
[store]To run cmd[amlnf dtb_write 0x0000000001000000 0x40000]
cmd dtb_write:
amlnf_dtb_save: ####
amlnand_save_info_by_name(), 1155
name ndtb, size:262144
amlnand_save_info_by_name, 1221: new blk 7
262144 bytes dtd_write : OK
[MSG]usb producing env_relocate
uboot env amlnf_env_read : ####
uboot env arg_valid = 0 invalid,amlnf_env_read
*** Warning - bad CRC, using default environment Saving Environment to aml-storage...
uboot env amlnf_env_save : ####
amlnand_save_info_by_name(), 1155
name nenv, size:65536
amlnand_save_info_by_name, 1221: new blk 8
Amlogic multi-dtb tool
Multi dtb detected
Multi dtb tool version: v2 .
Support 4 dtbs.
aml_dt soc: gxl platform: p211 variant: 1g
dtb 0 soc: gxbb plat: p201 vari: 1g
dtb 1 soc: gxbb plat: p201 vari: 2g
dtb 2 soc: gxl plat: p211 vari: 1g
dtb 3 soc: gxl plat: p211 vari: 2g
Find match dtb: 2
[info]success ID[16]
tplcmd[download store boot normal 9868780]
[MSG]flash LOGIC partCap 0x2000000B
[MSG]Down(store) part(boot) sz(0x9695ec) fmt(normal)
[MSG]totalSlotNum = 0, nextWriteBackSlot 1
[info]success

Q7的固件分析

Q7的固件包含文件及其说明如下

aml_sdc_burn.ini
aml_sdc_burn.UBOOT
卡刷时的配置文件, 和卡刷时的UBOOT固件, 在卡刷启动时会先加载这个UBOOT, 再进行后面的烧录 boot.PARTITION
这个是烧在内部NAND/eMMC的boot分区上的内容, 也即机器的UBOOT bootloader.PARTITION
这个是内部的bootloader, 加电后最先启动的程序 DDR.USB
不清楚 image.cfg
此固件的配置信息 logo.PARTITION
开机画面, 中间升级, 升级成功, 升级失败的画面等 manifest.xml
安卓的编译信息 meson1.dtb
硬件信息文件, 需要和bootloader配合使用 platform.conf
不确定, 各分区的地址? recovery.PARTITION
recovery分区的内容, 从boot启动到update后, 如果未进入usb burn, 也没有找到usb或sdcard上的升级内容, 就会进入recovery, 这是一个独立的小系统 system.PARTITION
安卓最重要的system分区的内容, 包含了命令行工具, 启动动画, 以及其他安卓相关的文件 UBOOT.USB
进入USB Burn模式后, 板子会重启并加载这个UBOOT, 再进行后面的烧录

.存在有一部分Q7的板子, 通过USB Burn模式刷固件会在4%的时候报内部存储初始化错误, 是因为UBOOT.USB无法识别此板子的mmc. 除了这个文件以外, bootloader.PARTITION和meson1.dtb也是和Q7关系很大的文件.

Q7启动后的存储挂载

mount, 是从/dev/block/ 下面的设备挂载出来的

adb shell mount
rootfs / rootfs ro,seclabel 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,seclabel,relatime 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
tmpfs /tmp tmpfs rw,seclabel,relatime 0 0
tmpfs /tmp/playInfoLog tmpfs rw,seclabel,relatime 0 0
tmpfs /tmp/capture tmpfs rw,seclabel,relatime 0 0
tmpfs /storage/external_storage tmpfs rw,seclabel,relatime,mode=775,uid=1000,gid=1023 0 0
/dev/block/system /system ext4 ro,seclabel,nosuid,nodev,noatime,nodiratime,noauto_da_alloc,errors=remount-ro 0 0
/dev/block/data /data ext4 rw,seclabel,nosuid,nodev,noatime,nodiratime,discard,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/block/cache /cache ext4 rw,seclabel,nosuid,nodev,noatime,nodiratime,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/block/params /params ext4 rw,seclabel,nosuid,nodev,noatime,nodiratime,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/block/ghost /ghost ext4 rw,seclabel,nosuid,nodev,noatime,nodiratime,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/block/info /info ext4 rw,seclabel,nosuid,nodev,noatime,nodiratime,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
adb /dev/usb-ffs/adb functionfs rw,relatime 0 0

df

adb shell df
Filesystem Size Used Free Blksize
/dev 389.4M 128.0K 389.3M 4096
/sys/fs/cgroup 389.4M 12.0K 389.4M 4096
/mnt/asec 389.4M 0.0K 389.4M 4096
/mnt/obb 389.4M 0.0K 389.4M 4096
/tmp 389.4M 0.0K 389.4M 4096
/tmp/playInfoLog 389.4M 0.0K 389.4M 4096
/tmp/capture 389.4M 240.0K 389.2M 4096
/storage/external_storage 389.4M 0.0K 389.4M 4096
/system 506.9M 387.7M 119.2M 1024
/data 4.6G 108.7M 4.5G 4096
/cache 495.9M 388.0K 495.6M 4096
/params 59.0M 40.0K 58.9M 4096
/ghost 495.9M 388.0K 495.6M 4096
/info 59.0M 44.0K 58.9M 4096
/mnt/shell/emulated 4.5G 108.7M 4.4G 4096

  

数码视讯Q7的刷机的更多相关文章

  1. 红米2A高配刷机记录

    2014816 机型:红米2A高配版 设备型号:2014816 CPU:高通 线刷:fastboot平台 http://192.168.7.118/MesReports/Reports/Cutting ...

  2. andriod刷机

    有句古话叫常在河边走,难免会翻船.对于经常刷机的Android刷友来说,难免会碰到刷机失败损坏recovery程序乃至手机无法启动的情况,也就是传说中的手机变砖块.不过刷机失败手机变砖并不是世界末日, ...

  3. 安卓刷机--fastboot线刷

    首先需要下载fastboot.exe,copy到system32文件夹下. 对于安卓系统的智能手机,同时按住开机键和音量减键,或手机连上电脑,输入adb reboot bootloader进入fast ...

  4. Android刷机教程

    我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线,将手机关机 2. 关机后同时按住[音量减小键]和[开关机键]即可进入Fastboot模式 开启usb调试  - ...

  5. Redmi Note3 hennessy 刷机过程记录

    本文只是凭记忆,记录大致的步骤,提供线索. 准备 刷机包和supersu刷机包,到xiaomi.eu上下载, 如果是稳定版可能有锁bootloader,需要到下载解锁软件.开发版无锁 刷入recove ...

  6. Sony Z1 flashtool 刷机笔记

    第一次硬刷,(相较于recovery的卡刷)差点变成无限重启..记录一些关键步骤: 1 unlock bootloader http://developer.sonymobile.com/unlock ...

  7. 记一次酷派尚锋Y75刷机

    昨天因为手机卡的原因,我的同学帮他的同学刷机,听他说是用刷机精灵线刷的rom包,但是刷机失败了,就来找我把弄好,他是个半吊子水平,刚接触这个东西,也是运气不好,什么刷机失败的问题都让他遇上了,刷了几个 ...

  8. 华为c8812刷机/rom之后,本地音乐无法设置为铃声解决方法【亲测】

    手机刷机后,来电铃声和通知铃声可以总能找到办法设置,但闹钟铃声想设置本地音乐,总是没反应,抓狂!!! 后来终于找到了解决办法,很简单:装一个软件——华为音乐,就可以设置了! 吐槽一下,这个手机买电信送 ...

  9. Android手机刷机失败的自救方法

    刷机对于一些android手机的高级用户来说已经是家常便饭了,很多新手也都跟着教程轻松了学会刷机.升级系统,也都开始经常在网上搜罗一些自制的系统进行刷机,体验新系统带来的新感觉.但是有句古话叫常在河边 ...

随机推荐

  1. python递归函数的执行过程

    举例: def nove(n,a,b,c): if n == 1: print(a,'------------>',c) else: nove(n-1,a,c,b) nove(1,a,b,c) ...

  2. Python 操作 MySQL 数据库

    使用示例: import pymysql #python3 conn=pymysql.connect(host="localhost",port=3306,user="r ...

  3. 【转】如何把变量或者数组定义到SDRAM及任意位置

    我们开发软件的时候,经常会遇到到一个问题,就是内存不够,这个时候就纠结了,怎么办,有两种方法,第一种是扩展内存,外加SRAM或者SDRAM:第二种应该就是优化代码,也就是通常所说的把数组大小减一减,代 ...

  4. C#实体类与XML相互转换

    1.实体类与XML相互转换 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化. 把XML转换成相应的实体类,需要使用到XmlSerializer类的De ...

  5. C#和PHP加密结果一致的DES加密解密算法。php实现和c#一致的DES加密解密

    DES加密算法 des对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密 ...

  6. 数字转datetime格式

    原数据:int型 转成年月日 时分秒的形式 source_test['happenTime'] = source_test['happenTime'].map(lambda x:str(x)) sou ...

  7. php组合设计模式(composite pattern)

    过十点. <?php /* The composite pattern is about treating the hierarchy of objects as a single object ...

  8. Intellij IDEA运行报Command line is too long解法

    修改项目下 .idea\workspace.xml,找到标签 <component name="PropertiesComponent"> , 在标签里加一行  < ...

  9. Hbase扩展

    1 HBase在商业项目中的能力 每天: 1) 消息量:发送和接收的消息数超过60亿 2) 将近1000亿条数据的读写 3) 高峰期每秒150万左右操作 4) 整体读取数据占有约55%,写入占有45% ...

  10. Windows Automation API和自动化测试

    https://zhuanlan.zhihu.com/p/22083601\ 感谢轮子哥点赞,这会儿消息扎堆过来了,轮带逛果然不是随便说说的…… 第二篇一个简单的Windows Automation ...