FwUpgrade烧写
qsenk fail
FB_1600_8192Mb_8192Mb,DDR管脚复用不匹配,有FB TB两种类型。
NE8K5S1K2HEAN00000350000003700AN100000100s100FXS1S1S1S1S1S1K:U3RDTCPU1100 overclock to 3200
zq_trim[0x16], ldo_trim[0x8]
DRAM1_DDR4x2_3199_32b_FB ini_ver: 0x31240401
DONE
>qsenk fail
RE K
null partition
TB_1600_8192Mb_8192Mb,编译固件应该根据硬件设计选择正确的配置,使用的配置cfg_539_IPC_NAND_RAMDISK_EVB配置编译的固件烧写到使用eMMC的板子导致,应该使用cfg_539_IPC_EMMC_RAMDISK_EVB编译固件。
NE8DCRCDCRCK5S1K2HEAN00000350000003700AN100000100s100FXS1S1S1S1S1S1K:U3RDTCPU1100 overclock to 3200
zq_trim[0x16], ldo_trim[0x8]
DRAM1_DDR4x2_3199_32b_TB ini_ver: 0x31240401
DONE
>in TB pinmux
rperbit
ddr init done real chip
bl_lowlevel_init done
UNZOK!
Loader Start ...
LD_VER 02.07.07
539_DDR4_1600_8192Mb_8192Mb 11/06/2024 18:26:16
[8bit]
Boot from USB ...
USBFW UPDATE
usbrom_exit >1
fdt addr 0x080000D4
fdt size 0x00021962
tmp_addr 0x08000000
LdCtrl2 0x00000001
upd_src_addr= 0x08000000
upd_src_size= 0x01990A54
E:bl_get_partition-1
E:nul p_emb_partition_bl31
E:bl_get_partition-1
E:null p_emb_partition_uboot
core_cnt= 0x00000002
smp(bl31)
fdt 0x00100000
shm 0x00A00000
core2_jump 0xF0D40800
code2JumpCodelen 0x00000010
core2_entry2 0x00010000
core2_entry 0xF0D40810
code2EntryCodelen 0x00000188
core2_entry2 0x00010000
bl_core2_reset
$64wfi64core2_jump_program 0x01007610
64code2JumpCodelen 0x00000228
warm reset core0
jump_entry 0xFFFFFFFF
ARC64warmrst*21
d1 s not matched(invalid dtb)
内存配置使用TB_1333_4096Mb_4096Mb(或TB_1333_4096Mb_0Mb)时,loader与SDK设备树中u-boot内存布局配置不一致导致。硬件设计为TB_1333_4096Mb_4096Mb,实测内存配置使用TB_1600_8192Mb_8192Mb也可以正常烧写。loader内存大小小于nvt-mem-tbl.dtsi中的内存大小时发生,反之可以正常烧写并启动进系统。
DRAM1_DDR4x2_2665_32b_TB ini_ver: 0x21240124
DONE
>in TB pinmux
rperbit
ddr init done real chip
bl_lowlevel_init done
UNZOK!
Loader Start ...
LD_VER 02.07.07
539_DDR4_1333_4096Mb_4096Mb 11/06/2024 18:56:00
[8bit]
Boot from USB ...
USBFW UPDATE
usbrom_exit >1
fdt addr 0x080000D4
fdt size 0x000218D1
tmp_addr 0x08000000
E:fw_d1_s 0x80000000
E:ld_d1_s 0x40000000
E:d1 s not matched
E:dtb get shmem fail
LdCtrl2 0x00000001
E:dtb get shmem fail
E:dtb get shmem fail
E:null p_bininfo
EMMC: 8 bits
EMMC
RE:invalid dtb
E:bl_chk_fdt errorload fdt failed
patch
--- a/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-mem-tbl.dtsi
+++ b/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-mem-tbl.dtsi
@@ -11,17 +11,17 @@
nvt_memory_cfg {
#address-cells = <1>;
#size-cells = <1>;
- dram { reg = <0x00000000 0x80000000>; };
+ dram { reg = <0x00000000 0x40000000>; };
core2entry1 { reg = <0x00000000 0x00010000>; };
core2entry2 { reg = <0x00010000 0x00010000>; };
fdt { reg = <0x00100000 0x00100000>; };
shmem{ reg = <0x00A00000 0x00100000>; };
loader { reg = <0x01000000 0x00100000>; };
atf { reg = <0x01F00000 0x00100000>; };
- linuxtmp { reg = <0x02000000 0x72F00000>; };
- all_in_one { reg = <0x74F00000 0x07800000>; };
- kernel_img { reg = <0x7C700000 0x01900000>; };
- uboot{ reg = <0x7E000000 0x02000000>; };
+ linuxtmp { reg = <0x02000000 0x32F00000>; };
+ all_in_one { reg = <0x34F00000 0x07800000>; };
+ kernel_img { reg = <0x3C700000 0x01900000>; };
+ uboot{ reg = <0x3E000000 0x02000000>; };
};
/* Linux system memory region*/
memory { device_type = "memory"; reg = <0x0 0x00000000 0x0 0x18000000>; };
正常烧写
N00000350000003700AN100000100s100FXS1S1S1S1S1S1K:U3RDTCPU1100 zq_trim[0xe], ldo_trim[0x8]
DRAM1_DDR4x2_2665_32b_TB ini_ver: 0x21240124
DONE
>in TB pinmux
rperbit
ddr init done real chip
bl_lowlevel_init done
UNZOK!
Loader Start ...
LD_VER 02.07.07
539_DDR4_1333_4096Mb_4096Mb 11/06/2024 20:10:23
[8bit]
Boot from USB ...
USBFW UPDATE
USBFW UPDATE: Running
usbrom_exit >1
fdt addr 0x080100E0
fdt size 0x000218D1
tmp_addr 0x08000000
LdCtrl2 0x00000001
upd_src_addr= 0x08000000
upd_src_size= 0x03FB03A0
bl31_addr 0x01F00000
uboot_addr 0x3E000000
nmlcore_cnt= 0x00000002
smp(bl31)
fdt 0x00100000
shm 0x00A00000
core2_jump 0xF0D40800
code2JumpCodelen 0x00000010
core2_entry2 0x00010000
core2_entry 0xF0D40810
code2EntryCodelen 0x00000188
core2_entry2 0x00010000
bl_core2_reset
$64wfi64core2_jump_program 0x01007610
64code2JumpCodelen 0x00000228
warm reset core0
jump_entry 0x01F00000
ARC64warmrst*21#NOTICE: BL31: v2.2(release):ns02302_linux_sdk_release_glibc_v3.05.100
NOTICE: BL31: Built : 20:05:24, Nov 6 2024
NOTICE: BL31: Found DTB
NOTICE: TZASC config:
NOTICE: 0x00100000@0x01f00000 (RW/N) Ree
INFO: ARM GICv2 driver initialized
INFO: BL31: Platform setup done
INFO: BL31: Initializing runtime services
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x3e000000
INFO: SPSR = 0x3c9
U-Boot 2021.10+ (Nov 06 2024 - 20:06:22 +0800)
CPU: Novatek NT @ 1099 MHz
DRAM: nvt_print_dram_setting: dram[0x0 - 0x40000000]
nvt_print_dram_setting: core2entry1[0x0 - 0x10000]
nvt_print_dram_setting: core2entry2[0x10000 - 0x10000]
nvt_print_dram_setting: fdt[0x100000 - 0x100000]
nvt_print_dram_setting: shmem[0xa00000 - 0x100000]
nvt_print_dram_setting: loader[0x1000000 - 0x100000]
nvt_print_dram_setting: shmem_amp[0x0 - 0x0]
nvt_print_dram_setting: atf[0x1f00000 - 0x100000]
nvt_print_dram_setting: teeos[0x0 - 0x0]
nvt_print_dram_setting: nsmem[0x0 - 0x0]
nvt_print_dram_setting: linuxtmp[0x2000000 - 0x32f00000]
nvt_print_dram_setting: uboot[0x3e000000 - 0x2000000]
nvt_print_dram_setting: rtos[0x0 - 0x0]
nvt_print_dram_setting: bridge[0x0 - 0x0]
nvt_print_dram_setting: memory[0x0 - 0x18000000]
nvt_print_dram_setting: all_in_one[0x34f00000 - 0x7800000]
nvt_print_dram_setting: kernel_img[0x3c700000 - 0x1900000]
nvt_print_dram_setting: dsp[0x0 - 0x0]
nvt_print_dram_setting: rtos_s0[0x0 - 0x0]
nvt_print_dram_setting: rtos_s1[0x0 - 0x0]
nvt_print_dram_setting: rtos_s2[0x0 - 0x0]
nvt_print_dram_setting: logo-fb[0x0 - 0x0]
nvt_print_dram_setting: logo2-fb[0x0 - 0x0]
1 GiB
Relocation to 0x3ff7b000, Offset is 0x01f7b000 sp at 3fc57500
nvt_shminfo_init: The fdt buffer addr: 0x3fc79bc0
otp_init[1.00.003]
otp_timing_reg= 0xff6050
MMC: nvt_pinmux_probe(pinmux= top_base=00000002f0010000, length=00000002f0010000):
pinmux_config_uart = 0x00000001
sdio pinmux(0x711)
sdio pinmux(0x711)
NVT_MMC2: pinmux 8 bit, but dts not 8 bits => assume 4 bits
NVT_MMC0: 0, NVT_MMC2: 2
Loading Environment from nowhere... OK
misc_init_r: Firmware name: FW98539A.bin FW98539T.bin FW98539A.fdt.bin
misc_init_r: boot time: 60240975(us)
CMD8 timeout, status 44
end_command IS NULL
CMD55 timeout, status 44
end_command IS NULL
switch to partitions #0, OK
mmc2(part 0) is current device
nvt_emmc_set_bootbus: Set EMMC boot bus to 4-bit mode
Set to BOOT_BUS_WIDTH = 0x1, RESET = 0x0, BOOT_MODE = 0x0
Starting to update firmware from USB/ETH
firmware image at: 0x03fb03a0@0x08000000
nvt_getfdt_emb_part_info: Skip this partition node: partition_fdt.restore
nvt_getfdt_emb_part_info: Skip this partition node: partition_fdt.restore
nvt_chk_mtd_fdt_is_null: nvt_chk_mtd_fdt_is_null: cmd:mmc read 0x3fca12c0 0x200 0x200
MMC read: dev # 2, block # 512, count 512 ... 512 blocks read: OK
modelext is empty
Update: loader
nvt_switch_boot_patition, mmc partconf 2 1 1 1
MMC write: dev # 2, block # 0, count 128 ... 128 blocks written: OK
nvt_switch_boot_patition, mmc partconf 2 1 1 0
Update: fdt
MMC write: dev # 2, block # 512, count 269 ... 269 blocks written: OK
Update: ATF
MMC write: dev # 2, block # 1536, count 81 ... 81 blocks written: OK
Update: uboot
MMC write: dev # 2, block # 2048, count 812 ... 812 blocks written: OK
Update: linux
MMC write: dev # 2, block # 6656, count 5965 ... 5965 blocks written: OK
Update: rootfs0
MMC write: dev # 2, block # 23040, count 5222 ... 5222 blocks written: OK
Update: rootfs1
Update: nvt_update_fs_partition EXT4 or FAT size=0x032e1368
Flashing sparse ext4 image at offset 0x55a00
Flashing Sparse Image
MMC write: dev # 2, block # 350720, count 8 ... 8 blocks written: OK
pinmux_show之坑
cat /proc/nvt_info/nvt_pinmux/pinmux_show查看到的管脚复用与实际不符。ns02302_pinmux.h
--- a/drivers/pinctrl/novatek/ns02302/ns02302_pinmux.h
+++ b/drivers/pinctrl/novatek/ns02302/ns02302_pinmux.h
@@ -330,8 +330,8 @@ typedef enum {
func_SN3_XVSXHS,
func_SN4_MCLK,
func_SN4_XVSXHS,
- func_SN5_MCLK,
- func_SN5_XVSXHS,
+ //func_SN5_MCLK,
+ //func_SN5_XVSXHS,
func_MIPI,
func_I2S_1,
func_I2S_2,
emmc启动之坑
eMMC设备树bus-width配置与BS管脚配置不一致会导致烧写后不会从eMMC启动。
--- a/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-peri.dtsi
+++ b/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-peri.dtsi
@@ -151,7 +151,7 @@
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
max-frequency = <48000000>;
max-voltage = <3300>;
- bus-width = <4>;
+ bus-width = <8>;
neg-sample-edge = <0>;
driving = <2 2 2 3 2 2 5 4 4 6 5 5>;
};
debug
echo 0 > /sys/class/block/mmcblk2boot0/force_ro
dd if=/dev/zero of=/dev/mmcblk2boot0
reboot
SPI设备配置之坑
设备树SPI设备配置GPIO中断后,驱动的probe函数不会被调用。
mcp2515
配置GPIO中断后,驱动的probe函数不会被调用;不配置GPIO中断,请求中断出错。问题进入僵局。SDK中没有设备树GPIO中断配置示例,企微联系技术支持,理解所问的问题都费劲,只能分析内核源码来解决。
config
CONFIG_CAN_MCP251X=y
CONFIG_CAN=y
CONFIG_CAN_DEV=y
dts
/ {
clk16m: clk16m {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <16000000>;
};
};
&spi2 {
#address-cells = <1>;
#size-cells = <0>;
can0:can0@0 {
compatible = "microchip,mcp2515";
reg = <0x0>;
clocks = <&clk16m>;
spi-cpol;
spi-cpha;
interrupt-parent = <&gpio>;
interrupts = <GIC_SPI 45 IRQ_TYPE_EDGE_FALLING>;
spi-max-frequency = <5000000>;
status = "okay";
};
};
spi_drv_probe
drivers/spi/spi.c
382 static int spi_drv_probe(struct device *dev)
383 {
384 const struct spi_driver *sdrv = to_spi_driver(dev->driver);
385 struct spi_device *spi = to_spi_device(dev);
386 int ret;
387
388 ret = of_clk_set_defaults(dev->of_node, false);
389 if (ret)
390 return ret;
391
392 if (dev->of_node) {
393 spi->irq = of_irq_get(dev->of_node, 0);
394 if (spi->irq == -EPROBE_DEFER)
395 return -EPROBE_DEFER;
396 if (spi->irq < 0)
397 spi->irq = 0;
398 }
of_irq_get
drivers/of/irq.c
378 /**
379 * of_irq_get - Decode a node's IRQ and return it as a Linux IRQ number
380 * @dev: pointer to device tree node
381 * @index: zero-based index of the IRQ
382 *
383 * Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or
384 * -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case
385 * of any other failure.
386 */
387 int of_irq_get(struct device_node *dev, int index)
388 {
389 int rc;
390 struct of_phandle_args oirq;
391 struct irq_domain *domain;
392
393 rc = of_irq_parse_one(dev, index, &oirq);
394 if (rc)
395 return rc;
396
397 domain = irq_find_host(oirq.np);
398 if (!domain)
399 return -EPROBE_DEFER;
400
401 return irq_create_of_mapping(&oirq);
402 }
403 EXPORT_SYMBOL_GPL(of_irq_get);
failed to acquire irq
dts
interrupts = <45 IRQ_TYPE_EDGE_FALLING>;
mcp251x_open
1229 ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist,
1230 flags | IRQF_ONESHOT, dev_name(&spi->dev),
1231 priv);
1232 if (ret) {
1233 dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq);
1234 goto out_close;
1235 }
debug
+ if (spi->irq < 0) {
+ /* P_GPIO21 */
+ spi->irq = gpio_to_irq(53);
+ }
irq domain
irq_find_host
include/linux/irqdomain.h
298 static inline
299 struct irq_domain *irq_find_matching_fwnode(struct fwnode_handle *fwnode,
300 enum irq_domain_bus_token bus_token)
301 {
302 struct irq_fwspec fwspec = {
303 .fwnode = fwnode,
304 };
305
306 return irq_find_matching_fwspec(&fwspec, bus_token);
307 }
308
309 static inline struct irq_domain *irq_find_matching_host(struct device_node *node,
310 enum irq_domain_bus_token bus_token)
311 {
312 return irq_find_matching_fwnode(of_node_to_fwnode(node), bus_token);
313 }
314
315 static inline struct irq_domain *irq_find_host(struct device_node *node)
316 {
317 struct irq_domain *d;
318
319 d = irq_find_matching_host(node, DOMAIN_BUS_WIRED);
320 if (!d)
321 d = irq_find_matching_host(node, DOMAIN_BUS_ANY);
322
323 return d;
324 }
irq_find_matching_fwspec
kernel/irq/irqdomain.c
373 struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec,
374 enum irq_domain_bus_token bus_token)
375 {
376 struct irq_domain *h, *found = NULL;
377 struct fwnode_handle *fwnode = fwspec->fwnode;
378 int rc;
379
380 /* We might want to match the legacy controller last since
381 * it might potentially be set to match all interrupts in
382 * the absence of a device node. This isn't a problem so far
383 * yet though...
384 *
385 * bus_token == DOMAIN_BUS_ANY matches any domain, any other
386 * values must generate an exact match for the domain to be
387 * selected.
388 */
389 mutex_lock(&irq_domain_mutex);
390 list_for_each_entry(h, &irq_domain_list, link) {
391 if (h->ops->select && fwspec->param_count)
392 rc = h->ops->select(h, fwspec, bus_token);
393 else if (h->ops->match)
394 rc = h->ops->match(h, to_of_node(fwnode), bus_token);
395 else
396 rc = ((fwnode != NULL) && (h->fwnode == fwnode) &&
397 ((bus_token == DOMAIN_BUS_ANY) ||
398 (h->bus_token == bus_token)));
399
400 if (rc) {
401 found = h;
402 break;
403 }
404 }
405 mutex_unlock(&irq_domain_mutex);
406 return found;
407 }
408 EXPORT_SYMBOL_GPL(irq_find_matching_fwspec);
__irq_domain_add
is_fwnode_irqchip
include/linux/irqdomain.h
288 extern const struct fwnode_operations irqchip_fwnode_ops;
289
290 static inline bool is_fwnode_irqchip(struct fwnode_handle *fwnode)
291 {
292 return fwnode && fwnode->ops == &irqchip_fwnode_ops;
293 }
arm,cortex-a7-gic
configs/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-basic.dtsi
/proc/device-tree/interrupt-controller@2,fff0000
drivers/irqchip/irq-gic.c
gpio-nvt
drivers/gpio/gpio-nvt.c
nvt_install_irq_chip时调用irq_domain_add_linear,此函数的第一个参数为空导致,irq_find_host找不到对应的irq_domain。
400 static int nvt_install_irq_chip(struct nvt_gpio_chip *chip)
401 {
402 int n = 0;
403
404 /* To create GPIO IRQ domain with total expend irq number */
405 chip->domain = irq_domain_add_linear(NULL, GPIO_IRQ_TOTAL,
406 &nvt_gpio_domain_ops, chip);
407 if (!chip->domain)
408 return -ENOMEM;
409
410 /* To create virq <-> hwirq mapping */
411 for (n = 0; n < GPIO_IRQ_TOTAL; n++)
412 irq_create_mapping(chip->domain, n);
413
414 /*
415 * Assign handler to gpio hw irq which is used to connect ARM GIC
416 * Once HWIRQ is triggered by gpio controller, this handler will be called.
417 */
418 for (n = 0; n < GPIO_IRQ_NUM; n++) {
419 irq_set_chained_handler_and_data(chip->irq_base[n], nvt_summary_irq_handler, chip);
420 }
421
422 return 0;
423 }
patch
--- a/drivers/gpio/gpio-nvt.c
+++ b/drivers/gpio/gpio-nvt.c
@@ -402,7 +402,7 @@ static int nvt_install_irq_chip(struct nvt_gpio_chip *chip)
int n = 0;
/* To create GPIO IRQ domain with total expend irq number */
- chip->domain = irq_domain_add_linear(NULL, GPIO_IRQ_TOTAL,
+ chip->domain = irq_domain_add_linear(chip->dev->of_node, GPIO_IRQ_TOTAL,
&nvt_gpio_domain_ops, chip);
if (!chip->domain)
return -ENOMEM;
debugfs
--- a/arch/arm64/configs/ns02302_ipc_a64_evb_defconfig_emmc_release
+++ b/arch/arm64/configs/ns02302_ipc_a64_evb_defconfig_emmc_release
@@ -55,7 +55,7 @@ CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
-# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+CONFIG_GENERIC_IRQ_DEBUGFS=y
# end of IRQ subsystem
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
gpio_config之坑
nvt-gpio.dtsi 文件注释中所说的gpio_config不工作。设备树中GPIO寄存器基址配置错误导致。
402 nvt_mem_base = platform_get_resource(pdev, IORESOURCE_MEM, 2);
403 info->gpio_base = devm_ioremap_resource(&pdev->dev, nvt_mem_base);
404 if (IS_ERR(info->gpio_base)) {
405 dev_err(&pdev->dev, "fail to get gpio mem base\n");
406 return -ENOMEM;
407 }
patch
--- a/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-peri.dtsi
+++ b/Linux/cfg_539_IPC_EMMC_RAMDISK_EVB/nvt-peri.dtsi
@@ -275,7 +275,7 @@
reg = <
0x2 0xf0010000 0x0 0x1100
0x2 0xf0030000 0x0 0x2000
- 0x2 0xf0070000 0x0 0x10000
+ 0x2 0xf0040000 0x0 0x10000
>;
};
make tools
multiple definition of 'junk'
编译iozone报错。
aarch64-ca53-linux-gnu/bin/ld: libbif.o:(.bss+0x0): multiple definition of `junk'; iozone_linux.o:(.bss+0x0): first defined here
iozone.c 1634行junk增加static修饰。
1634 static int junk;
command not found
编译gdb时报错。
makeinfo: command not found
安装texinfo,sudo apt install texinfo
No package 'zlib' found
mtd-utils没有编译。
configure:14311: checking for ZLIB
configure:14318: $PKG_CONFIG --exists --print-errors "zlib"
Package zlib was not found in the pkg-config search path.
Perhaps you should add the directory containing `zlib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'zlib' found
configure:14321: $? = 1
configure:14335: $PKG_CONFIG --exists --print-errors "zlib"
Package zlib was not found in the pkg-config search path.
Perhaps you should add the directory containing `zlib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'zlib' found
configure:14338: $? = 1
configure:14352: result: no
No package 'zlib' found
patch
--- a/Makefile
+++ b/Makefile
@@ -96,7 +96,7 @@ mtd-utils: zlib lzo libuuid
@echo ">>>>>>>>>>>>>>>>>>> $@ compiling >>>>>>>>>>>>>>>>>>>"
$(call check_exist, ${MTD_UTILS})
cd ${MTD_UTILS}; \
- CFLAGS=-I${TOOLS}/${INSTALL_DIR}/include CPPFLAGS=-I${TOOLS}/${INSTALL_DIR}/include LDFLAGS=-L${TOOLS}/${INSTALL_DIR}/lib ./configure --host=${NVT_HOST} --prefix=${TOOLS}/${INSTALL_DIR} --without-xattr; \
+ PKG_CONFIG_PATH=${TOOLS}/${INSTALL_DIR}/lib/pkgconfig CFLAGS=-I${TOOLS}/${INSTALL_DIR}/include CPPFLAGS=-I${TOOLS}/${INSTALL_DIR}/include LDFLAGS=-L${TOOLS}/${INSTALL_DIR}/lib ./configure --host=${NVT_HOST} --prefix=${TOOLS}/${INSTALL_DIR} --without-xattr; \
make; make install;
memtester: init