no output from value assigned to device tree property

I am learning BBB and device tree overlays. In my device tree source (testoverlay.dts), I try the following:
my_value = <12>;
but the only output appears to be “\n” when I “cat my_value” as shown below…I have yet to recognize my problem. I read some posts on device tree assignments with respect to u32 values as well as negative value assignments but still no success. I’m not sure where to look next since I’m not confident with my “testoverlay” without the my_value property assignment ! Any suggestions or references for further study would be greatly appreciated. Thank you very much.

my test device output ::

debian@beaglebone:/proc/device-tree/xyz_i2c_dev$ ls -al
total 0
drwxr-xr-x  2 root root  0 Oct 17 18:48 .
drwxr-xr-x 14 root root  0 Oct 17 18:48 ..
-r--r--r--  1 root root 15 Oct 17 18:48 compatible
-r--r--r--  1 root root 10 Oct 17 18:48 label
-r--r--r--  1 root root  4 Oct 17 18:48 my_value
-r--r--r--  1 root root 12 Oct 17 18:48 name
-r--r--r--  1 root root  5 Oct 17 18:48 status
debian@beaglebone:/proc/device-tree/xyz_i2c_dev$ cat compatible
xyz, Txyx_V001debian@beaglebone:/proc/device-tree/xyz_i2c_dev$ cat label
Test-txyzdebian@beaglebone:/proc/device-tree/xyz_i2c_dev$ cat name
xyz_i2c_devdebian@beaglebone:/proc/device-tree/xyz_i2c_dev$ cat status
okaydebian@beaglebone:/proc/device-tree/xyz_i2c_dev$ cat my_value

debian@beaglebone:/proc/device-tree/xyz_i2c_dev$ ^C
debian@beaglebone:/proc/device-tree/xyz_i2c_dev$ 

My test overlay “testoverlay.dts” ::

/dts-v1/;
/plugin/;
/{
	fragment@0 {
		target-path="/";
		__overlay__{
			chosen {
				overlays {
					testoverlay = "14 Oct 2022 09:48:00";
				};
			};
		};
	};
	fragment@1 {
		target-path = "/";
		__overlay__{
			xyz_i2c_dev{
				compatible = "xyz, Txyx_V001";
				status = "okay";
				label = "Test-txyz";
				my_value = <12>;
			};
		};
	};
};

My version ::

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[b39ec679648a6be8f25f48bd1c9784c1fc5a0c46]
eeprom:[A335BNLT00C02151SBB39877]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Buster IoT Image 2020-04-06]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-00002-g07d5700e21]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0.bb.org-overlays]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.bb.org-overlays]
UBOOT: Loaded Overlay:[testoverlay]
kernel:[4.19.94-ti-r42]
nodejs:[v10.24.0]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/testoverlay.dtbo]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[disable_uboot_overlay_audio=1]
uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo]
uboot_overlay_options:[enable_uboot_cape_universal=1]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-wl18xx-firmware]:[1.20211222.2-0~buster+20211222]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal bluetooth netdev i2c gpio pwm eqep remoteproc admin spi iio docker tisdk weston-launch xenomai cloud9ide]
cmdline:[console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[   49.743325] remoteproc remoteproc0: wkup_m3 is available
[   49.900057] remoteproc remoteproc0: powering up wkup_m3
[   49.900086] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217168
[   49.900340] remoteproc remoteproc0: remote processor wkup_m3 is now up
[   52.594296] remoteproc remoteproc1: 4a334000.pru is available
[   52.623862] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[   52.594296] remoteproc remoteproc1: 4a334000.pru is available
[   52.594494] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully
[   52.623862] remoteproc remoteproc2: 4a338000.pru is available
[   52.624076] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully
dmesg | grep pinctrl-single
[    0.949728] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[    0.963096] gpio-of-helper ocp:cape-universal: ready
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END
debian@beaglebone:~$

You can’t just cat your my_value property like that because the syntax <12> in dts will encode a 32-bit value into 4 bytes using big-endian byteorder. Try e.g.
xxd -g4 my_value
or
perl -nE 'say for unpack "N*"' my_value

BTW, using underscores in DT properties is very non-idiomatic, typically you’d use dashes instead (e.g. my-value).

In case it’s of any use, here’s some notes I wrote on DT syntax: device tree summary - Pastebin.com

Thank you zmatt for your prompt reply and consideration.

Both solutions [xxd -g4 my_value] and [perl -nE ‘say for unpack “*N”’ my_value] worked. Obviously, I didn’t even think in terms of encoding - and I have much to learn with respect to Linux.

Your attached “device tree summary” is already proving useful for extending my understanding of the device tree overlays.

Again, thank you so much for your feedback. I consider my problem solved.